回 帖 发 新 帖 刷新版面

主题:复制构造函数的形参

小弟近来看《C++ primer》,有一问题不解:
复制构造函数的形参并不限制为const,但必须是引用。课本解释如下:
要使用以传值方式传递参数的复制构造函数,则必须使用“不以传值方式传递参数”的复制构造函数,否则将导致传值构造函数的无穷调用。所以,必须使用引用。
这个   “不以传值方式传递参数”的复制构造函数   是什么?
各位大虾帮忙解释下。。
谢了!

回复列表 (共2个回复)

沙发

以传值方式传递参数,就会调用复制构造函数。
如果复制构造函数本身也以传值方式传递参数,这就成了一个解不开的死结了。

按照这个说法,复制构造函数必须是“不以传值方式传递参数”的形式,否则就没有意义。
换句话说,所有可以正常使用的复制构造函数,都应该是“不以传值方式传递参数”的复制构造函数。

class A {
public:
    A(A a);        // 以传值方式传递参数,错误并且没有实用价值
    A(const A& a); // 以引用方式传递参数,正确并且有实用价值
};

板凳

明白一些了,谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册