为什么不能根据返回类型来区分重载_C++日志(三十九)教你如何以类的非静态成员函数形式重载运算符...

53437c1983dca40fba6931e3ead0085d.png

将运算符重载函数作为类的非静态成员,其优点为函数可以使用本类对象的私有数据成员。根据运算符的操作数,有以下几种情况:

备注:为了方便起见,后面所有“成员函数”均表示“非静态成员函数”。

(1)双目运算符

对于下述形式的表达式:

ob1 

应该将运算符重载函数作为“ob1所属类的成员函数”,并将“ob2类的引用作为重载函数的形式参数”。此时,上述表达式等价于“ob1.重载函数(ob2)”。例子如下:

class 

(2)前置单目运算符

对于所有的前置单目运算符来说,其表达式如下:

单目运算符 

此时,重载 运算符的函数不需要任何参数,因为该重载函数是ob的非静态成员函数。上述表达式等价于“ob.重载函数()”。 例子如下:

class 

(3)后置单目运算符

对于++和--这两个单目运算符来说,由于其即可前置又可后置,所以要进行区分。其表达式如下:

ob 单目运算符;

当自加和自减后置时,需要一个无名的int类型作为重载函数形参。这个参数并不参与运算,只是用于和前置的单目运算符进行区分。例子如下:

class Duck {
public:
	Duck() {};
	// 以成员函数形式,重载后置单目运算符
	Duck operator++(int) const {
		printf("Duck ++! n");
		// 返回为Duck类型
		return Duck();
	}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值