有以下程序: class Date { public: Date(int y,int m,int d); { year = y; month = m; d

admin2010-06-06  30

问题 有以下程序:    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;        resurn 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;时,系统用返回初始化一个匿名对象时使用了拷贝构造函数。
转载请注明原文地址:https://kaotiyun.com/show/hSjp777K
0

最新回复(0)