构造函数中的无穷递归问题

//日期类
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,并且成了死循环,这种情况就是拷贝构造中的经典大坑,希望大家看到了这篇博客后以后能注意一下这个点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值