相关疑难解决方法(0)

使用C++ 11中显式删除的成员函数,是否仍然值得从不可复制的基类继承?

使用C++ 11中显式删除的成员函数,是否仍然值得从不可复制的基类继承?

我在谈论私有继承基类的技巧,该基类具有私有或删除的复制构造函数和复制赋值(例如boost::noncopyable).

这个问题提出的优势是否仍适用于C++ 11?


我不明白为什么有些人声称在C++ 11中使类不可复制更容易.

在C++ 03中:

private:
    MyClass(const MyClass&) {}
    MyClass& operator=(const MyClass&) {}
Run Code Online (Sandbox Code Playgroud)

在C++ 11中:

MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
Run Code Online (Sandbox Code Playgroud)

编辑:

正如许多人所指出的那样,为私有拷贝构造函数和拷贝赋值运算符提供空体(即{})是错误的,因为这将允许类本身调用那些运算符而没有任何错误.我首先开始没有添加{},但遇到了一些链接器问题,这些问题让我添加{}有些愚蠢的原因(我不记得这些情况).我知道更清楚.:-)

c++ noncopyable c++11

58
推荐指数
4
解决办法
3万
查看次数

标签 统计

c++ ×1

c++11 ×1

noncopyable ×1