浅拷贝:在用户没有自创拷贝构造函数时,c++编译器会自己提供一个,进行简单的赋值操作
深拷贝:在堆区重新申请空间,进行拷贝操作
我们先创建一个关于person的类:
在有创建两个变量 指针m_height和 整形常量 m_age
在有参构造函数中 在堆区创建一个整形height并用m_height指针来接收
此时程序在main函数中成功执行
但在堆区开辟空间使用完之后,要在构析函数中手动释放,此时我们便可改动构析函数
但此时会发生运行错误,原因p2通过浅拷贝将p1数据连同地址保存在其内存中,数据的释放遵寻“先进后出”,p1先进去,最后再释放内存,而在p1释放内存之前,p2已经释放过一次了,p1便重复释放内存,属于非法操作。
此时的解决办法便是自己在类中再实现一个拷贝构造函数,给p2再堆区重新创建一个内存空间存放其数据
运行结果如下: