私有拷贝构造函数:disallow

tma*_*ric 4 c++ constructor copy-constructor

我正在一个开源库中编程,它在代码中只有很少的注释,并且绝对没有代码相关的文档,或者这些注释完全没有显示或者完全令人困惑.库的示例类有时定义如下(这是一个抽象的简短示例):

class A
{
    private:

    // Disallow default bitwise copy construct. 
    A (const A& Acopy) { data = Acopy.data; };

    int data;

    public:

    A() {};

    A (int arg) : data(arg) {};

    A(const A& Acopy) { data = Acopy.data; };

};
Run Code Online (Sandbox Code Playgroud)

私有拷贝构造函数前面的注释"Dissalow default bitwise copy construct" 会指出这样一个事实:当我定义一个类型时,我需要定义自己的拷贝构造函数,以避免编译器模糊地为我"生成"一个.这是我到目前为止在这个主题上学到的.但在这种情况下,构造函数是私有的,并且编译以这种形式中断.

问:这样的事情有原因吗?私有的复制构造函数?这个评论意味着什么?

托米斯拉夫

jal*_*alf 9

这几乎意味着你所说的.通常,编译器会生成一个复制构造函数.为了防止这种情况,您可以定义自己的,并将其设为私有.然后,任何复制构造类的尝试都将在编译时失败,而不是默默地做错事.

  • 通常,复制构造函数只是声明为私有而未实现,赋值运算符接收相同的处理.很少见的情况是你不想要一个公共拷贝构造函数,但私有构造函数是有意义的. (2认同)