当我试图创建具有一个构造,其通过值取该类的一个对象,例如像一类:C++“无效构造函数”
class X{
X(){}
X(X x){} //Error!
};
则g ++抱怨用于第二构造函数以下:
error: invalid constructor; you probably meant ‘X (const X&)’
亲爱的编译器,不,我不是指一个const引用。这一次,我想做我写的东西:通过值传递参数x!为什么这是无效的?
当我试图创建具有一个构造,其通过值取该类的一个对象,例如像一类:C++“无效构造函数”
class X{
X(){}
X(X x){} //Error!
};
则g ++抱怨用于第二构造函数以下:
error: invalid constructor; you probably meant ‘X (const X&)’
亲爱的编译器,不,我不是指一个const引用。这一次,我想做我写的东西:通过值传递参数x!为什么这是无效的?
您正在尝试创建复制构造函数,并且复制构造函数必须参考。否则,当你通过值传递x到构造函数中时,编译器将不得不创建x的临时副本,为此需要调用复制构造函数,为此需要创建一个临时副本....广告infinium。
所以拷贝构造函数必须通过引用来引用它的参数来防止无限递归。
因为
X(X x){} //Error!
需要一个拷贝构造函数。即本身即递归。即什么时候结束?
您正试图实现一个复制构造函数,该构造函数仅通过将引用传递给要复制的对象。
你会如何调用这样的构造函数? – 2012-08-10 15:42:31