函数重载是指在相同作用域内,若干个参数特征不同的函数使用相同的函数名;运算符重载是指同样的运算符可以施加不同类型的操作数上面。
对运算符重载的限制:
(1) 只能重载C++原先已有定义的运算符。
(2)不能重载下列4个运算符:
. .* :: ?:
(3)不能改变运算符操作个数。
(4)不能改变运算符原有的优先级。
(5)不能改变运算符原有的结合特性。
(6)不能改变运算符对预定义类型数据的操作方式。
重载参数问题:
(1)重载一元运算符时,参数表为空。
(2)重载二元运算符时,参数表中有一个参数。
c++规定,赋值运算符=只能用成员函数重载。
重载赋值运算符解决指针悬挂问题
C++ 规定,赋值运算符必须使用成员函数重载,而且重载赋值运算符的成员函数operator = 不能被继承。
重载运算符的规则:
-
下列4个运算符只能用成员函数重载,不能用友元函数重载:
= -> () []
2. 下列2个运算符只能用友元函数,不能用成员函数重载:
>> <<
3. 如果运算符的操作符的操作需要修改当前对象的状态
(例如,运算符+=,-=,*=,/=,++,--等),则最好用成员函数重载。
4. 如果一元运算符的操作数,或二元运算符的左操作数,有可能是预定义类型的数据,则必须能把该操作数隐式类型转换为类对象,在这种情况下,该运算符必须用友元函数重载,而不能用成员函数重载。