当我尝试创建一个具有构造函数的类时,该构造函数按值接受该类的对象,例如:

class X{
    X(){}
    X(X x){} //Error!
};

然后g++为第二个构造函数提示以下内容:
error: invalid constructor; you probably meant ‘X (const X&)’

亲爱的编译器,不,我不是const引用。这次,我想做我写的事情:按值传递参数x!为什么这无效?

最佳答案

您正在尝试创建一个拷贝构造函数,并且一个拷贝构造函数必须采用一个引用。否则,当您按值将x传递给构造函数时,编译器将必须创建x的临时拷贝,为此,它需要调用copy构造函数,而它需要创建一个临时拷贝...。广告无限。

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

关于c++ - C++ “invalid constructor”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11904997/

10-12 23:56