我读过成员访问运算符点运算符.
和箭头运算符->
返回值:
箭头运算符需要一个指针操作数并产生一个左值。如果从中获取成员的对象是左值,则点运算符产生左值;否则结果是一个右值。
这是来自 C++ Primer 5 版本。
所以我想只要非常量左值是他们表达式的返回值,我就可以分配一个值,例如:
struct foo {
int x_;
const int y_ = 17; ;
void bar() { cout << "bar()" << endl;}
}f, *pf;
pf = &f;
(pf->bar()) = 75; // error
cout << f.x_ << endl;
(f.bar()) = 12;// error
(f.x_) = 23;
cout << "f_x: " << f.x_ << endl;
(pf->y_) = 34;// error
我对分配给箭头运算符的返回值感到困惑。上面据说->
总是返回一个左值,但如果我尝试分配给该值,它会失败。
- 任何人都可以向我解释 C++ 书中的上述段落。谢谢你。