在以下代码中:
class MyClass
{
public:
vector<int> v;
};
MyClass f()
{
MyClass x;
x.v.resize(10);
for (int i = 0; i < 10; i++)
{
x.v[i] = i;
}
return x;
}
void g()
{
MyClass x;
x = f(); // Copy assignment is called for vector<int>
}
使用 Visual C++ 2012 编译,x = f()
我假设将为向量调用移动赋值。相反,我可以看到调用了复制分配。类中没有定义复制/移动赋值/构造函数,所以我希望编译器会生成默认的移动赋值。如果我使用普通向量而不是MyClass
移动分配工作正常。这段代码有问题吗?我错过了什么吗?