已删除vs空副本构造函数

vla*_*don 0 c++ copy-constructor c++11

已删除的副本构造函数的示例:

class A
{
public:
    // empty copy constructor
    A(const A &) {}
}

class B
{
public:
    // deleted copy constructor
    A(const A&) = delete;
}
Run Code Online (Sandbox Code Playgroud)

他们是否在实践中做同样的事情(禁止复制对象)?为什么delete比这更好{}

T.C*_*.C. 11

他们是否在实践中做同样的事情(禁止复制对象)?

否.尝试调用已删除的函数会导致编译时错误.可以调用空复制构造函数,它只是默认初始化类成员而不是进行任何复制.

为什么delete比这更好{}

因为你不太可能真正想要一个空的拷贝构造函数提供的奇怪的"复制"语义.