运算符重载

本文详细介绍了C++中的运算符重载,特别是赋值运算符的官方实现方式,以及二目、单目和多目运算符的重载规则。对于单目运算符,强调了其前置和后置的区别,并通过代码示例展示了如何定义前置和后置的自增、自减、取反等操作。同时,还讨论了多目运算符,如类的函数调用,如何通过重载()来实现不同参数数量的调用。最后,提醒读者注意运算符重载的特殊性和注意事项。
摘要由CSDN通过智能技术生成

赋值、累加运算符

class ST{
	
	ST& operator?( ... ){  ' 其中的?,可以是: =  +=  -=  *= '
		// .....
		return *this;
	}	
}

这是赋值运算符重载,非常非常官方的实现方式,诸多stl容器都是这样实现的。

Base

二目

A * B
对A 进行:operator * ( B )的成员函数。


单目

这是比较复杂,因为他不像二目 他没有后面的B,也即是: 运算符函数参数 按理说是空的!!

而且,有些单目运算符 还有“前置”! 这就比二目复杂的多
二目的话,因为是对A重载的,即对A来说 肯定是“后置”,运算符后面的B,即是函数参数,这非常符合人的思路!!

对单目运算符的重载,确实不符合人的思考。所以,对于单目运算符,最好牢记住他的规则!!!

函数参数为空,则为前置。 放一个(int)参数,表示后置
这是语言标准定死的, 牢记即可。 而且,不是所有符号都能重载

即,单目运算符 要看:函数参数,来确实是 前置、后置

T operator++(){  // ++ t
	DE<< "pre ++"; ED;
}
T operator++(int){ // t ++
	DE<< "post ++"; ED;
}
T operator*(){ // *t
	DE<< "pre *"; ED;
}
T operator!(){ // !t
	DE<< "pre !";
}

返回值T,可以自定义。


多目

括号
t() 、t(1)、t(1, 2)
括号的用法很特别,因为是他“多目”。
在这里,t即是一个类,运算符是:(),参数是:1,2(当然,逗号,不用关注)

class ST{
	T operator()(){	} // t()
	T operator()(int){	} // t(1)
	T operator()(int, int){	} // t(1,2)

注意这里,非常容易写错! operator后面是(),即要进行重载的运算符,别把他当成是函数参数列表。

重载了()的类,也称为: 仿函数Funtor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值