点运算符和箭头运算符都可以访问成员
ptr->men等价于 (*ptr).men
string s1 = "A string", *p = &s1;
auto n = s1.size();
n = (*p).size();
n -> size();
解引用优先度低于点运算符 所以要加括号
条件运算符 (?:)
string finalgrade = (grade<60)? "Fail" : "Pass";
嵌套条件运算符
string finalgrade = (grade >90) ? "high grade" : (grade<60)? "fail" : "pass";
条件运算符满足右结合律
Warning:随着条件运算嵌套层数的增加,代码的可读性急剧下降。因此,条件运算的嵌套最好别超过3层
在输出表达式中使用条件运算符
cout << ((grade<60) ? "fail" : "pass"); //输出pass或者fail
cout << (grade<60) ? "fail" : "pass"); //输出1或0
cout << grade < 60 ? "fail" : "pass"; //错:试图比较cout和60
第二条里 grade<60就是 << 运算对象, grade<60 则输出为1否则则为0
第三条可以写成
cout<< grade;
cout < 60 ? "fail" : "pass"
错误