为什么在C+中使用私有拷贝构造函数而不是删除拷贝构造函数+; 为什么在C++中使用私有复制构造函数删除复制构造函数?

为什么在C+中使用私有拷贝构造函数而不是删除拷贝构造函数+; 为什么在C++中使用私有复制构造函数删除复制构造函数?,c++,C++,例如: 类实体 { 私人: 实体(常量实体和副本)/2个可能的原因: 不能使用C++11或更高版本 您需要类的对象能够被类的方法或它的朋友复制,但不能被其他任何东西复制 与C++98兼容。私有复制ctor可以在其他成员函数中使用。如果类的资源是唯一的,则可以使用删除。例如,您可以将复制ctor设置为私有,并向外部提供公共克隆函数。请提供一个示例构造,说明您可能希望实例能够复制的位置,其中你不想让外人这样做吗?@camercu是一个链接列表节点。应该能够创建节点的类只有节点和链接列表,即节点的朋

例如:

类实体
{
私人:
实体(常量实体和副本)/2个可能的原因:

  • 不能使用C++11或更高版本

  • 您需要类的对象能够被类的方法或它的朋友复制,但不能被其他任何东西复制


与C++98兼容。私有复制ctor可以在其他成员函数中使用。如果类的资源是唯一的,则可以使用删除。例如,您可以将复制ctor设置为私有,并向外部提供公共克隆函数。请提供一个示例构造,说明您可能希望实例能够复制的位置,其中你不想让外人这样做吗?@camercu是一个链接列表
节点
。应该能够创建
节点
的类只有
节点
和链接列表,即
节点
朋友
class Entity
{
private:
    Entity(const Entity &copy) // <== private copy constructor
    {
       /* do copy stuff */
    }
public:
    /* more code here... */
}
class Entity
{
public:
    Entity(const Entity &copy) = delete; // <== copy constructor deleted

    /* more code here... */
}