c++:拷贝构造函数&&深浅拷贝

image.png

默认拷贝构造函数的汇编代码:

image.png

其实就相当于这一段代码


拷贝构造函数

image.png

多态拷贝构造函数

多态

子类拷贝构造函数调用父类拷贝构造函数,利用父指针可以指向子类。


浅拷贝

  • 编译器默认提供的拷贝是浅拷贝
  • 浅拷贝:指针类型的变量只会拷贝地址值


    image.png

堆空间指向栈空间不安全,因为栈空间不能人为控制回收。所以堆空间指向栈空间的指针可能变成野指针。

所以要让name数组在堆空间中申请,并且手动释放。


image.png

浅拷贝带来的问题

image.png

  • 析构造成double free
  • 修改car2,cai1也会改变

深拷贝

  • 深拷贝:将指针指向的内容拷贝到新的存储空间


    image.png

    image.png

你可能感兴趣的:(c++:拷贝构造函数&&深浅拷贝)