成员运算符
1.成员运算符:(1)"."(2)"->"
2.通过成员运算符可以访问成员。点运算符可以获取到一个类对象的成员。箭头形式是点形式的另一种表示。
例:ptr->mem和(*ptr).mem是一样的。由于解引用运算符的优先级比点运算符的优先级低,所以要将解引用运算符用括号括起来。
3.箭头运算符需要一个指针操作数并且产生的是左值。
点运算符返回左值还是右值取决于它作用的类的成员返回左值还是右值。
如果点运算符作用的类的成员返回左值,则点运算符返回的也是左值;
如果点运算符作用的类的成员返回的是右值,则点运算符返回的也是右值;
条件运算符?:
1.形式: cond ? expr1 : expr2;
cond是一个条件表达式,expr1和expr2有相同的类型,或者可以转换成相同的类型。如果cond为真,则执行expr;否则执行expr2。
2.条件运算符保证了expr1和expr2只能有一个被执行。
3.如果expr1和expr2都是左值或者它们能够转换为一个相同的左值类型时,条件运算符的结果也是左值;否则条件运算符的结果是右值。
4.条件运算符可以进行嵌套。也就是说,一个条件运算符可以被当做另一个条件运算符的条件或者其中的一个或两个表达式。但是通常条件表达式的嵌套不容易让人读懂,使用超过两个或三个的嵌套是不好的方式。
5.条件表达式的优先级很低。如果在一个很大的表达式中使用时,要将条件表达式用小括号括起来。例如在输出条件运算符的值时,要将条件运算符完全括起来。