//日期类
class Date {
public:
Date(int year = 2020, int month = 0, int day = 0)
{
_year = year;
_month = month;
_day = day;
}
Date(const Date& d) {
_year = d._year;
_month = d._month;
_day = d._day;
}
private:
int _year;
int _month;
int _day;
};
在上面的代码中为什么拷贝构造函数的必须传递Date&的参数,而不能写成Date呢?
这是因为,当我们创建Date d1(d2),我们想的是将d2通过拷贝构造传递给d1,但是,如果我们这里写的是Date d,函数会临时创建一个新的Date类型的d,并将d2赋值给d
,这里又会调用拷贝构造函数,拷贝构造函数又会创建一个d,并想把d2赋值给d,但是你会发现,操作了半天,实际上一直都没有真正的将d2传递给d,并且成了死循环,这种情况就是拷贝构造中的经典大坑,希望大家看到了这篇博客后以后能注意一下这个点。