我在开源库中编程,在代码中只有很少的注释,并且绝对没有代码相关的文档,或者显示完全没有或完全混淆的注释。一个例子类的库有时被定义如下(这是一个抽象简单的例子):私人拷贝构造函数:disallow
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; };
};
在私人拷贝构造函数的前“Dissalow默认按位拷贝构造”的评论就指出这样一个事实当我定义一个类型时,我需要定义我自己的拷贝构造函数,以避免编译器为我“模糊生成”一个拷贝构造函数。这是我迄今在这个主题上学到的。但在这种情况下,构造函数是private,并且编译以此形式中断。
问:是否有这样的理由?一个私人的复制构造函数?这个评论意味着什么?
托米斯拉夫
通常,复制构造函数只是声明为私有的,并未实现,赋值运算符接收相同的处理。罕见的情况是你不想公开复制构造函数,但私人构造函数是有意义的。 – AProgrammer 2011-06-10 07:57:18
如果我定义了任何拷贝构造函数** private **或** public **,编译器将不会生成一个。如果编译器被赋予一个引用而不是一个值作为参数,它将采用引用而不是值。如果它是私人的,它不能从课外被调用,其中两个可能不存在。这是否意味着类的模板是这样写的,以迫使程序员定义他自己的公共副本(或私人)构造函数? – tmaric 2011-06-10 08:02:30
不,当这样写时,它是*防止*课程被复制*完全*。一旦存在复制构造函数,就不能创建第二个构造函数。如果它是私密的,那么它实际上意味着该类不能被复制。 – jalf 2011-06-10 08:06:27