正确的拷贝构造的函数体格式如下:
Date(Date& d)
{
if(this!=&d)
{
_year=d._year;
_month=d._month;
_day=d._day;
(1)首先明确一点:除了传引用不是传值外,其余的传参数都是传值。
(2)如果传参数是传值的话,对象调用类的拷贝函数,从而造成不断递归调用拷贝构造函数。
具体的过程见图:
(3)如果传引用的话,就没有了中间不断的重复的拷贝构造过程,一次拷贝构造就解决了。
(4)如果不小心写成了传值拷贝构造,编译器会报错