【发布时间】:2016-04-22 12:00:06
【问题描述】:
为什么要编译这段代码?我认为ctor返回的右值不在内存中,因此不能用作左值。
#include <iostream>
#include <vector>
class Y {
public :
explicit Y(size_t num = 0)
: m_resource {std::vector<int>(num)}
{
}
std::vector<int> m_resource;
};
int main(int argc, const char * argv[]) {
Y(1) = Y(0); // WHAT?!?
return 0;
}
【问题讨论】:
-
可以在任何对象上调用成员函数
operator=。您的代码与Y(1).operator=(Y(0));相同
标签: c++ c++11 rvalue lvalue-to-rvalue