单选题 有以下程序:
Class Date
{public:
Date(int y,int m,int d);
{year=y;
month=m;
day=d;}
Date(int y=2000)
{year=y;
month=10;
day=1;)
Date(Date &d)
{year=d.year;
month=d.month;
day=d.day;}
void print()
{cout<<year<<“.”<<month<<“.”<<day<<endl;}
private:
int year,month,day;};
Date fun(Date d)
{Datetemp;
temp=d;
return temp;}
int main()
{Date date1(2000,1,1),date2(0,0,0);
Date date3(datel);
date2=fun(date3);
return 0;}
程序执行时,Date类的拷贝构造函数被调用的次数是{{U}} {{/U}}。
  • A.2
  • B.3
  • C.4
  • D.5
【正确答案】 B
【答案解析】[解析] 本题拷贝构造函数一共被调用了3次:第一次是在执行语句Date date3(date1);时,用已经建立的对象date1对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传住调用,因此实参对象date3要对形参对象d进行初始化,第三次是在执行fun函数中的返回语句returntemp;时,系统用返回初始化一个匿名对象时使用了拷贝构造函数。