C++ 禁用运算符=并复制构造函数
有没有办法禁用operator=和复制构造函数,并且只允许使用C++ 禁用运算符=并复制构造函数,c++,C++,有没有办法禁用operator=和复制构造函数,并且只允许使用std::move()? 我知道我能做到 foo& operator= (const foo&) = delete; foo(const foo&) = delete; 但这也将禁用std::move 我想要的是阻止复制此类 并且只允许foo foo2=std::move(foo1) 顺便说一句,我有私人承包商。使用默认的特殊成员函数: foo(foo&&) = default; foo&am
std::move()
?
我知道我能做到
foo& operator= (const foo&) = delete;
foo(const foo&) = delete;
但这也将禁用std::move
我想要的是阻止复制此类
并且只允许foo foo2=std::move(foo1)代码>
顺便说一句,我有私人承包商。使用默认的特殊成员函数:
foo(foo&&) = default;
foo& operator=(foo&&) = default;
使用默认的
特殊成员函数:
foo(foo&&) = default;
foo& operator=(foo&&) = default;
foo(foo&&)=默认值代码>:错误默认构造函数的无效类型您还可以将其设置为私有,并仅提供声明,而不提供定义。如果您的编译器不支持c++11或default
/delete
功能,这只是一种解决方法。请参阅“右值引用”“默认和删除的函数”,或者更好,请注意这里的注2:foo(foo&&)=default代码>:错误默认构造函数的无效类型您还可以将其设置为私有,并仅提供声明,而不提供定义。仅当编译器不支持c++11或默认
/删除
功能时,这才是一种解决方法。请参见“右值引用”“默认和删除的函数”或更好的注释2: