打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++提高:运算符重载

文章目录

题目

代码实现+、=、==、[]、!=、++、–等运算符重载

代码

#include <iostream> 
using namespace std;

class A {
public:
A(int x, int y)
{
m_iX = x;
m_iY = y;
}
// 前置--运算符重载
A &operator--()
{
this->m_iX--;
this->m_iY--;
return *this;
}
// 后置--运算符重载 
A operator--(int)
{
A coor(*this);
coor.m_iX = this->m_iX--;
coor.m_iY = this->m_iY--;
return coor;
}
// +号运算符重载 
A operator+(A &c)
{
A temp(0, 0);
temp.m_iX = this->m_iX + c.m_iX;
temp.m_iY = this->m_iY + c.m_iY;
return temp;
}
public:
int m_iX;
int m_iY;
};

int main(void)
{
A coor1(1, 3);
A coor2(2, 4);
A coor3(0, 0);
coor1--;
--coor2;
coor3 = coor1 + coor2;
cout << coor3.m_iX << endl;
cout << coor3.m_iY << endl;
return 0;
}

知识回顾

重载

在 C++当中,所谓重载,就是赋予新的含义。函数重载( Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。

运算符重载(Operator Overloading)也是一个道理,同一个运算符可以有不同的功能

重载运算符特点

  1. C++中的运算符除了少数几个之外,全部可以重载,而且只能重载 C++中已有的运算符

  2. 重载之后运算符的优先级和结合性都不会改变

  3. 运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来说,重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型

  4. 不能重载的运算符只有五个,它们是:成员运算符“.”、指针运算符“*”、作用域运算符“::”、“sizeof”、条件运算符“?:

  5. 运算符重载形式有两种,重载为类的成员函数和重载为类的友元函数

  6. 运算符重载为类的成员函数的一般语法形式为:

    函数类型 operator 运算符(形参表)
    {
    函数体;
    }
    
  7. 运算符重载为类的友元函数的一般语法形式为:

    friend 函数类型 operator 运算符(形参表)
    {
    函数体;
    }
    

运算符重载的注意事项

可重载的运算符

算术运算符:+,-,,/,%,++,–;
位操作运算符:&,|,~,^,<<,>>
逻辑运算符:!,&&,||;
比较运算符:<,>,>=,<=,==,!=;
赋值运算符:=,+=,-=,
=,/=,%=,&=,|=,^=,<<=,>>=;
其他运算符:[],(),->,(逗号运算符),new,delete,new[],delete[],- >*。
下列运算符不允许重载:.,.*,::,?:

运算符重载后,优先级和结合性

用户重载新定义运算符,不改变原运算符的优先级和结合性。这就是说,对运算符重载不改变运算符的优先级和结合性,并且运算符重载后,也不改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符只能重载双目运算符

重载运算符有哪些限制

1)不可臆造新的运算符。必须把重载运算符限制在 C++语言中已有的运算符范围内的允许重载的运算符之中

2)重载运算符坚持 4 个“不能改变”

  • 不能改变运算符操作数的个数
  • 不能改变运算符原有的优先级
  • 不能改变运算符原有的结合性
  • 不能改变运算符原有的语法结构

运算符重载时必须遵循哪些原则

  1. 运算符重载可以使程序更加简洁,使表达式更加直观,增加可读性。但是,
    运算符重载使用不宜过多,否则会带来一定的麻烦
  2. 重载运算符含义必须清楚
  3. 重载运算符不能有二义性
  4. 运算符重载函数的两种形式
  5. 运算符重载的函数一般地采用如下两种形式:成员函数形式和友元函数形式。
    这两种形式都可访问类中的私有成员
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel函数运算符优先级
编译时多态和运行时多态
operator==.cpp
【C++运算符重载】
C++中操作符重载(++和--)
C++基础之重载运算符的详细介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服