C++"无效的构造函数"

gex*_*ide 6 c++ constructor compiler-errors

当我尝试创建一个具有构造函数的类时,该构造函数通过值获取该类的对象,例如:

class X{
    X(){}
    X(X x){} //Error!
};
Run Code Online (Sandbox Code Playgroud)

然后g ++抱怨第二个构造函数的以下内容:

error: invalid constructor; you probably meant ‘X (const X&)’
Run Code Online (Sandbox Code Playgroud)

亲爱的编译器,不,我不是指const引用.这一次,我想做我写的:通过值传递参数x!为什么这个无效?

Dim*_*ima 17

您正在尝试创建复制构造函数,并且复制构造函数必须使用引用.否则,当您按值将x传递给构造函数时,编译器必须创建x的临时副本,为此需要调用复制构造函数,为此需要创建临时副本....广告.

因此,复制构造函数必须通过引用获取其参数以防止无限递归.


Ed *_*eal 6

因为

X(X x){} //Error!
Run Code Online (Sandbox Code Playgroud)

需要一个复制构造函数.即本身即递归.即什么时候结束?!