有以下程序: 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) { Date temp; temp=d; return temp; } int main( ) { Date datel(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 dare3(datel);时,用已经建立的对象datel对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第三次是在执行fun函数中的返回语句return temp;时,系统初始化一个匿名对象时使用了拷贝构造函数。