class A {};

int main() {
 A() = A();
 return 0;
}

为什么要编译此代码?应该不会在赋值运算符的左侧放置左值吗?是A()左值吗? g++ 4.7版本

最佳答案

对于内置类型,您将是正确的:内置赋值运算符在左侧需要可修改的左值。

但是,这不是使用内置运算符,而是使用由类隐式声明的重载。这是一个成员函数,等效于

A().operator=(A());

成员函数可以在右值上调用。

10-05 20:49