有以下程序: 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类的拷贝构造函数被调用的次数是( )。
A.2
B.3
C.4
D.5
参考答案:B
解析: 本题拷贝构造函数一共被调用了3次:第一次是在执行语句Date date3(date1);时,用已经建立的对象date1对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传住调用,因此实参对象date3要对形参对象d进行初始化,第三次是在执行fun函数中的返回语句returntemp;时,系统用返回初始化一个匿名对象时使用了拷贝构造函数。