a=b=c,右结合性,b=c,a=b
无符号号整数和有符号整数相加,有符号整数转化为无符号整数
0、运算符
~、^、&、|、%(取余)等都必须两边是整型
(1)三目运算符:A ? B : C,A真:返回B,A假:返回C
(2).运算符是类成员访问运算符,->是指针对象访问成员时用的访问运算符。
p.a,因为.的优先级比的优先级高,故上面的表达方式不对
(3) ^:异或运算
A^B=C; C^A得B, C^B得A
(4)||为逻辑或,只要有一个为真,即为逻辑真 1 当左侧为真,右侧不计算
|位按位或,化成二进制进行或运算。5|7=0101|0111=0111=7
&&,当左侧为假,右侧不计算
x|(x+1)统计x二进制数中,0的个数
x&(x-1)统计x二进制数中,1的个数
(5)x%3,x必须为整数
(6)关系运算符优先级高于赋值运算符,n=a
1、优先级
优先级:单算一笔,鞍落三赋
优先级最低的是逗号
三目:a ? b : c ? d : e将按a ? b : (c ? d : e)执行
2、可、不可重载运算符
不可:带. 指针 带: # sizeof
->可以
有的运算符只能作为成员函数重载;
不会定义新的运算符;
重载+:运算符函数名应该为operator+
重载二元运算符时,形参会少一个
重载为类成员函数时,类本身是该双目运算符的一个参数,所以还需要一个参数
如果重载为友元函数则需要两个参数
赋值运算符只能作为类的成员函数重载
默认的赋值运算符实现了“浅层复制”功能
重载的赋值运算符函数有一个本类对象作为形参
复制构造函数 和 重载赋值运算符 可以同时存在。
(1)只能使用(类成员)成员函数重载的运算符有:=、()、[]、->、new、delete。
(2)单目运算符最好重载为成员函数。
(3) 对于复合的赋值运算符如+=、-=、*=、/=、&=、!=、~=、%=、>>=、<<=建议重载为成员函数。
(4) 对于其它运算符,建议重载为友元函数。
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:
函数类型 operator 运算符名称 (形参表列)
{
对运算符的重载处理
}
重载为类成员函数时参数个数=原操作数个数-1(后置++、—除外)。重载为友元函数时 参数个数=原操作数个数,且至少应该有一个自定义类型的形参
3、类型转换运算符
若有收获,就点个赞吧