考虑到当今编译器在返回值优化方面的高质量(RVO 和 NRVO),我想知道开始添加移动构造函数和移动赋值运算符实际上对什么类复杂度有意义。
例如,对于这个really_trivial
类,我只是假设移动语义不能提供比 RVO 和 NRVO 在复制它的实例时已经提供的任何东西:
class really_trivial
{
int first_;
int second_;
public:
really_trivial();
...
};
在这个semi_complex
类中,我会毫不犹豫地添加一个移动构造函数和移动赋值运算符:
class semi_complex
{
std::vector<std::string> strings_;
public:
semi_complex(semi_complex&& other);
semi_complex& operator=(semi_complex&& other);
...
};
那么,添加移动构造函数和移动赋值运算符的成员变量的数量和种类开始变得有意义?