文章目录
- 1. 拷贝构造的引入
- 2. 拷贝构造的引用场景
1. 拷贝构造的引入
拷贝构造函数:只有
单个形参
,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用;
特征:
① 拷贝构造函数是构造函数的一个重载形式。
② C++自定义的类型会调用它的拷贝构造;
③拷贝构造函数的参数
只有一个
且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用;
④ 若未显式定义,编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝
,或者值拷贝;
2. 拷贝构造的引用场景
① 使用已存在对象创建新对象;
② 函数参数类型为类类型对象;
③ 函数返回值类型
为类类型对象;
class Date
{
public:Date(int year, int minute, int day){cout << "Date(int,int,int):" << this << endl;}Date(const Date& d){cout << "Date(const Date& d):" << this << endl;}~Date(){cout << "~Date():" << this << endl;}
private:int _year;int _month;int _day;
};
Date Test(Date d)
{Date temp(d);return temp;
}
int main()
{Date d1(2022, 1, 13);Test(d1);return 0;
}