C++ C++;-为包含字符串的类移动构造函数
本质上,我希望RAII对象的生命周期发生变化C++ C++;-为包含字符串的类移动构造函数,c++,C++,本质上,我希望RAII对象的生命周期发生变化 这是我实现移动构造函数和赋值运算符的时候吗?或者仅仅做std::move(…)就足够了?std::move如果没有move构造函数和/或move赋值操作符,是没有用的 但是,类的所有成员都是可移动的,并且没有任何用户定义的析构函数、复制构造函数或复制赋值运算符,因此将有一个隐式定义的移动构造函数和移动赋值运算符来执行正确的操作 因此,在这种特定情况下,答案是不需要定义移动构造函数或赋值运算符。std::move没有移动构造函数和/或移动赋值运算符是无
这是我实现移动构造函数和赋值运算符的时候吗?或者仅仅做
std::move(…)
就足够了?std::move
如果没有move构造函数和/或move赋值操作符,是没有用的
但是,类的所有成员都是可移动的,并且没有任何用户定义的析构函数、复制构造函数或复制赋值运算符,因此将有一个隐式定义的移动构造函数和移动赋值运算符来执行正确的操作
因此,在这种特定情况下,答案是不需要定义移动构造函数或赋值运算符。
std::move
没有移动构造函数和/或移动赋值运算符是无用的
但是,类的所有成员都是可移动的,并且没有任何用户定义的析构函数、复制构造函数或复制赋值运算符,因此将有一个隐式定义的移动构造函数和移动赋值运算符来执行正确的操作
因此,在这种特定情况下,答案是不需要定义移动构造函数或赋值运算符。向量实际上并不包含字符串,最多是指向字符串的指针。复制
Foo
/向量在任何情况下都不会复制字符串。一旦开始使用指针,就假设你的向量实际上不包含字符串,最多是指向字符串的指针。复制Foo
/向量在任何情况下都不会复制字符串。一旦开始使用指针,就假定它们有效
class Foo { int a; int b; int c; std::wstring d; std::vector<char*> e };
void Test()
{
Foo foo;
DoSomething(std::move(foo)); // DoSomething will stuff it in a long-lived queue
}