C++操作符
一.操作符函数
在C++中,编译器把运算符当做函数来处理,可以重载,通过重定义操作符函数,可以自定义远算法则。
二.单目操作符有这些:
相反数:- 自变:++,-- 取地址:& 解引用:* 间接成员访问:-> 逻辑非:! 位反:~ ()
比较重要的是:前++/--,后++/--
成员函数:
1.前++/--:
类& operator ++/-- (void)
{
}
2.后++/--:
类& operator ++/--(int)
全局函数:
在成员函数后边的参数中加类& name
三.双目操作符表达式:
注意:有些操作符只能用作成员函数或全局函数(两种不能都起作用)
例:+=
成员函数:类 &operator += (类& name)
{
类成员 += name.类成员;
return* this;
}
全局函数:void operator += (类& name1,类& name2)
{
name1.类成员 += name2.类成员;
}
2. 典型的双目运算符重载还有:+ - * % / | ^ &(逻辑与) += -= *= /=
成员函数:
注意: 原对象的值不变,要产生一个临时的对象;
全局函数:
注意: 1.可能会访问到参数的私有成员:
a. 吧成员变为公开,但是会破坏类的封闭性
b.吧全局函数声明为友元函数
c. 不能在友元函数中直接访问变量成员
四.输出与输入
输入与输出不能重载为成员函数,只能在全局使用,只能是友元函数
ostream& operator << (ostream& os,类& name)
istream& operator >>(istream& is,类& name)
五.特殊的元算符重载
[] () -> *
new/delete
六.不能重载的运算符:
::
.
.*
?:
sizeof
typedef
注意:运算符的重载不能改变运算符的优先级
无法改变运算符的操作个数
无法发明新的运算符,重载运算符要注意运算符的一致性,不要改变运算符的运算规则
运算符的重载是为了方便实用,增强可读性的;