运算符重载

1. 运算符重载函数形式:

    返回值 关键字operator 运算符(参数列表){函数体}

2. 重载运算符函数的参数数量与运算符的运算对象数量一致,一元运算符有一个参数,二元运算符有两个参数。二元运算符左侧的对象传递给第一个参数,右侧的对象传递给第二个参数。

3. 运算符函数是成员函数时,this绑定到左侧运算对象,运算符函数的参数数量也要比运算对象少一个。

4. 运算符函数或者是类成员函数,或者至少含有一个类类型的参数

int operator+ (int, int) //错误,不能为int冲定义内置的运算符
5. 运算符函数可以通过运算符来调用,也可以通过普通函数名来调用
data1 + data2;                 //运算符调用
operator+(data1, data2);       //函数名调用

6. 大多数运算符可以重载,除了以下几类

:: 
.* 
.  
? : 

7. 逗号、取地址、逻辑与、逻辑或运算符不应该被重载,以为重载后的运算符失去了运算符本身包含的一些性质,如短路求值、运算对象求值顺序等

8. 作为成员函数还是非成员函数:

    (1) 赋值=、下标[]、调用()、成员访问箭头->必须是成员;

    (2) 复合赋值运算符+=、-=、*=、/=一般来说应该是成员,但不是必须

    (3) 改变对象状态,或者与给定类型密切相关的运算符,如递增++、递减--、解引用* 等运算符,应该是成员;

    (4) 具有对称性的运算符可能转换任意一端的对象,例如算术、相等性、关系、位运算等,通常应该是普通非成员,因为成员函数左侧的参数必须是this对象。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值