拷贝构造函数
如果⼀个构造函数的第⼀个参数是⾃⾝类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。
拷⻉构造的特点:
- 拷贝构造函数是构造函数的⼀个重载。
Date(const Date& d)
{
_year = d._year;
_month = d._month;
_day = d._day;
}
int main()
{
Date d1(2024, 7, 12);
d1.Print();
Date d2(d1);
d2.Print();
return 0;
}
-
拷贝构造函数的参数第⼀个参数且必须是类类型对象的引用,使用传值方式编译器直接报错,因为语法逻辑上会引发无穷递归调用。
使用传值会报错需加引用Date(Date&d)
-
C++规定⾃定义类型对象进行拷贝行为必须调用拷贝构造,所以这里自定义类型传值传参和传值返回都会调⽤拷贝构造完成。
//传引用不想改变实参就把const加上
//void Func1(const Date& d)无外参数改变最好加一个const
void Func1(Date d)
{
cout << &d << endl;
d.Print(