Ton*_*ony 1 c++ class function
我无法理解为什么a.funct()可以是赋值运算符的左操作数,即使funct()没有返回l值引用.
class A
{
public:
A funct () {A x; return x;}
};
int main ()
{
A a,b; a.funct()=b;
}
Run Code Online (Sandbox Code Playgroud)
在类的自动生成方法中,有
A& operator = (const A&);
Run Code Online (Sandbox Code Playgroud)
这使得a.funct() = b合法.
为了禁止对rvalue的影响,你可以从C++ 11开始编写和实现
A& operator = (const A&) &; // Note the last &
Run Code Online (Sandbox Code Playgroud)
所以分配只适用于左值.