为什么这段代码能够编译通过?我原以为构造函数返回的右值不会被存储在内存中,因此不能作为左值使用。
class Y {
public :
explicit Y(size_t num = 0) {}
};
int main() {
Y(1) = Y(0); // WHAT?!?
return 0;
}
operator=
可以在任何对象上调用。你的代码与Y(1).operator=(Y(0));
相同。 - M.M