类和对象
大约 1 分钟
对象的初始化和清理
拷贝构造函数调用时机
Person(const Person &p){
}
- 使用一个已经创建完毕的对象来初始化一个新对象
- 值传递的方式给函数参数传值
- 以值方式返回局部对象
构造函数调用规则
创建一个类,C++编译器会给每个类都添加至少3个函数
- 默认构造(空实现)
- 析构函数(空实现)
- 拷贝构造(值拷贝)
- 如果我们写了有参构造函数,编译器就不再提供默认构造,依然提供拷贝构造
- 如果我们写了拷贝构造函数,编译器就不再提供其他普通构造函数了[1]
深拷贝和浅拷贝
浅拷贝:简单的赋值拷贝操作
深拷贝:在堆区重新申请空间,进行拷贝操作
如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题(如堆区变量的重复释放)
也可以将其理解为有参构造函数的一种特殊情况 ↩︎
