跳至主要內容

类和对象

𝓳𝓭𝔂𝓼𝔂𝓪大约 1 分钟c语言面向对象

对象的初始化和清理

拷贝构造函数调用时机

Person(const Person &p){
}
  1. 使用一个已经创建完毕的对象来初始化一个新对象
  2. 值传递的方式给函数参数传值
  3. 以值方式返回局部对象

构造函数调用规则

创建一个类,C++编译器会给每个类都添加至少3个函数

  1. 默认构造(空实现)
  2. 析构函数(空实现)
  3. 拷贝构造(值拷贝)
  • 如果我们写了有参构造函数,编译器就不再提供默认构造,依然提供拷贝构造
  • 如果我们写了拷贝构造函数,编译器就不再提供其他普通构造函数了[1]

深拷贝和浅拷贝

浅拷贝:简单的赋值拷贝操作
深拷贝:在堆区重新申请空间,进行拷贝操作

如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题(如堆区变量的重复释放)


  1. 也可以将其理解为有参构造函数的一种特殊情况 ↩︎