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

admin2020-06-29  20

问题 有以下程序:
    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<  }
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次:第1次是在执行语句Date date3(date1)时,用已经建立的对象date1对正在建立的对象date3进行初始化;第2次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第3次是在执行fun函数中的返回语句return temp;时,系统初始化一个匿名对象时使用了复制构造函数。
转载请注明原文地址:https://kaotiyun.com/show/ZY8p777K
0

最新回复(0)