单选题 有如下程序:
#include<iostream.h>
using namespace std;
class Demo
{
public:
Demo(){ cout<<"default constructor/n";}
Demo(const Demo &x){cont<<"copy constructor/n";}
};
Demo userCode(Demo b){Demo c(b);return c;}
int main()
{
Demo a;d;
eout<<"calling userCode()/n";
d=userCode(a);
return 0;
}
执行上面程序的过程中,构造函数Demo()和Demo(const Demo &x)被调用的次数分别是{{U}} {{/U}}。
  • A.1和1
  • B.1和2
  • C.2和3
  • D.2和4
【正确答案】 C
【答案解析】[解析] 函数Demo()为构造函数,而Demo(const Demo &x)为复制构造函数。C++在创建一个对象时,会自动调用类的构造函数,所以语句"Demo a,d;"将调用函数Demo()两次。当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数。由此可知语句d=userCode(a);调用拷贝构造函数3次。