为了防止拷贝一个类,你可以很容易地声明一个私有拷贝的构造函数/赋值操作符。 但是你也可以inheritanceboost::noncopyable 。 在这种情况下使用boost有什么优点/缺点?
在C ++ 11中显式删除成员函数,是否仍然值得从不可复制的基类inheritance? 我谈论的是你私下inheritance一个具有私有或删除拷贝构造函数和拷贝分配(例如boost::noncopyable )的基类的技巧。 在这个问题上提出的优点是否仍然适用于C ++ 11? 我不明白为什么有些人声称在C ++ 11中做一个不可复制的类更容易。 在C ++ 03中: private: MyClass(const MyClass&) {} MyClass& operator=(const MyClass&) {} 在C ++ 11中: MyClass(const MyClass&) = delete; MyClass& operator=(const MyClass&) = delete; 编辑: 正如许多人指出的那样,为私有拷贝构造函数和复制赋值运算符提供空主体(即{})是错误的,因为这将允许类本身无误地调用这些运算符。 我首先开始不添加{},但遇到了一些链接器问题,使我添加了一些愚蠢的理由(我不记得的情况下)。 我知道更好知道。 🙂