选择题   有以下程序:
    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 date1(2000,1,1),date2(0,0,0);
        Date date3(date1);
        date2=fun(date3);
        return 0;}
    程序执行时,Date类的复制构造函数被调用的次数是______。
 
【正确答案】 B
【答案解析】本题复制构造函数一共被调用了三次:第一次是在执行语句Date date3(date1);时,用已经建立的对象date1对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第三次是在执行fun函数中的返回语句return temp;时,系统初始化一个匿名对象时使用了复制构造函数。