问题 单项选择题

有以下程序: 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<<end1; } private:int year,month,day; }; Date fun(Date D) {Date temp;temp=d;return temp; } int main() {Date date1(2000,1,1),date2(0,0,0);Date date3(date1);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函数中的返回语句return temp;时,系统用返回初始化一个匿名对象时使用了拷贝构造函数。

选择题
多项选择题