【C++】拷贝构造函数不能传值的原因探究

首先,拷贝构造函数就是以一个对象作为形参的构造函数.

不能传值是因为传值的过程中,形参是实参的一份拷贝.
我们的参数是一个对象,此时编译器调用拷贝构造函数.
如果传值的话,我们在实现拷贝构造函数时需要调用拷贝构造函数复制实参,此时还未定义拷贝构造函数,就会陷入无穷递归…

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;
}

猜你喜欢

转载自blog.csdn.net/zhaocx111222333/article/details/113601413