里面的运行结果是13A23B,请问:哪来的3?

#include<iostream.h>
class Con
{
char ID;
public:
char getID()
{
return ID;
}
Con()
{
ID='A';
cout<<1;
}
Con(char id)
{
ID=id;
cout<<2;
}
Con(Con& c)
{
ID=c.getID();
cout<<3;
}
};
void show(Con c)
{
cout<<c.getID();
}
void main()
{
Con c1;
show(c1);
Con c2('B');
show(c2);
}
运行结果是13A23B
问:哪来的3啊

拉莫斯之舞
浏览 119回答 3
3回答

catspeake

3是在调用show(c1)和show(c2)函数的时候输出的参数传递的时候要调用类的复制构造函数就是这个Con(Con& c){ID=c.getID();cout<<3;}

炎炎设计

Con(Con& c){ID=c.getID();cout<<3;}

哆啦的时光机

调用了你定义的拷贝构造函数,这是因为你的show()函数是传值调用。看样子你是想输出1A2B,那么将show()函数改为show(Con &c),其余不变。
打开App,查看更多内容
随时随地看视频慕课网APP