问题 单项选择题

有如下程序: #include<iostream> using namespace std; class Con { char ID; public: Con():ID(’A’){cout<<1;} Con(char ID):ID(ID’){cout<<2;} Con(Con&c):ID(c.getID()){cout<<3;} char getID()const{returnID;} }; void show(Con c){tout{(c.getID();} int main() { Con c1; show(c1); Con c2(’B’); show(c2); return 0; } 执行上面程序的输出是( )。

A.13A23A

B.23A13B

C.13A23B

D.13B23A

答案

参考答案:C

解析: Conc1定义c1对象,调用Con的无参数构造函数,输出1,ID值变为A,执行show(cl)时会调用拷贝构造函数,将c1对象的值拷贝给show()函数的形参,此时输出3,然后在show()中输出c1的ID值A,Con c2(’B’)定义c2对象,调用Con(char ID)构造函数,输出2,c2的ID值为B,show(c2)执行时先调用拷贝构造函数输出3,然后输出B。因此程序输出结果为“13A23B”。

单项选择题
判断题