首先,拷贝构造函数就是以一个对象作为形参的构造函数.
不能传值是因为传值的过程中,形参是实参的一份拷贝.
我们的参数是一个对象,此时编译器调用拷贝构造函数.
如果传值的话,我们在实现拷贝构造函数时需要调用拷贝构造函数复制实参,此时还未定义拷贝构造函数,就会陷入无穷递归…
class Date
{
public:
Date(int year = 2021, int month = 2, int day = 3)
{
_year = year;
_month = month;
_day = day;
}
Date(const Date& d)
//Date(Date d)
//分别是穿引用和传值
{
_year = d._year;
_month = d._month;
_day = d._day;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
Date d2(d1);
//copy构造函数
return 0;
}