知识点

类对象引用

自写复制构造函数

一、 类对象引用

Tdate d1;

Tdate &d2=d1;


二、自写复制构造函数

  Tdate d1;

  Tdate d2=d1; //会调用默认复制构造函数 Tdate::Tdate(d1);

通过以上调用我们可以写出复制构造的原型如下

  Tdate::Tdate(Tdate d) //但如此定义,新的问题随之而来 ,因为d是按值传送的,在传送的时候会调用默认复制构造函数创建一个副本。如果如上定义那么我们将陷入无休止的循环中。

解决办法就是使用引用。以上函数原型修改后如下:

Tdate::Tdate(Tdate &d)   //Tdate d2=d1;中d是对d1的引用


 //date.h
    Tdate(Tdate &d);//默认复制构造函数说明
 //date.cpp
Tdate::Tdate(Tdate &d) //自定义的复制构造函数
{
    printf("\n进入自定义复制构造函数\n");
    Tdate::year=d.year;
    Tdate::month=d.month;
    Tdate::day=d.day;
    //还有需要复制的数据,继续添加
 }