4.6 成员访问运算符
4.6 成员访问运算符
点运算符和箭头运算符都可用于访问成员,其中,点运算符获取类对象的一个成员;箭头运算符与点运算符有关,表达式ptr->mem
等价于(*ptr)->mem
;
注意解引用运算符的优先级低于点运算符,所以执行解引用运算的字表达式两端必须加上括号。如果没有括号,代码的含义就不相同了。
string s1 = "a string", *p = s1;
auto n = s1.size();
n = (*p).size();
n = p->size();
*p.size(); // 错误
箭头运算符作用于一个指针类型的运算对象,结果是一个左值。
点运算符分成两种情况:如果成员所属的对象是左值,那么结果是左值;如果成员所属的对象是右值,那么结果是右值。