复制构造函数 只能有一个参数吗

 我来答
wanglixin1001
2015-08-03 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:867万
展开全部

有意思的问题。

在C++ primer (P406)中有说道:

只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为复制构造函数。可见,说复制构造函数只有一个参数是对的。

但是下面这个例子:

#include <iostream>
using namespace std;
class A{
public:
A(){}
A(const A &a, int idx = 0) {
cout << "copy constructor invoked\n";
cout << idx << endl;
}
};

int main() {
A a;
A b(a);
return 0;
}

如上,A(const A &a, int idx = 0)这一构造函数,不是单个形参,这里有其他形参idx,只是它需要有默认值。

所以说要看你怎么理解,一般大家都理解为单一形参,但是如果要多个形参,需要除了第一个形参外其它带有默认值。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式