C++ 搬家进退两难
为了禁用我的类的复制,我假设声明为私有,但不定义C++ 搬家进退两难,c++,c++11,move-semantics,C++,C++11,Move Semantics,为了禁用我的类的复制,我假设声明为私有,但不定义操作符=(const MyClass&)和MyClass(const MyClass&)-我还必须禁用这个类的move-ctor吗?是否隐式生成move构造函数(以及何时生成)还有待讨论 请参见StroustUp从2010-10-17开始的内容,副标题为是否默认生成移动操作? 顺便说一句,在C++0x中,您可以=删除函数,而不是使它们私有化和未定义 class non_copyable { public: non_copyable(
操作符=(const MyClass&)
和MyClass(const MyClass&)
-我还必须禁用这个类的move-ctor吗?是否隐式生成move构造函数(以及何时生成)还有待讨论
请参见StroustUp从2010-10-17开始的内容,副标题为是否默认生成移动操作?
顺便说一句,在C++0x中,您可以=删除函数,而不是使它们私有化和未定义
class non_copyable {
public:
non_copyable(const non_copyable&) = delete;
non_copyable& operator=(const non_copyable&) = delete;
};
引述:
与默认的复制构造函数不同,
编译器不提供
默认移动构造函数
所以对于VS2010来说,没有必要隐瞒这一点。他们没有专门讨论默认移动分配运算符,但我想他们也不会生成一个。谢谢您的回答。不幸的是,我在VS2010上工作,他们仍然没有实现删除构造。很高兴知道。@没关系,它们也没有实现移动构造函数的默认生成,所以您不必显式禁用它们。