首先明确什么是浅拷贝:一个类至少提供四种方法1
1.默认构造
2.析构函数
3.拷贝构造
4.赋值运算符operator=
这里的3拷贝构造和4operator=方法,就是直接用“=”号来对数据赋值,也就是浅拷贝
但是如果数据是开辟在堆区(new)那么如果是单纯的用等号来赋值的话,在析构函数中释放堆区数据的时候会报错,为什么呢?
下面是具体错误的代码:
下面是原理图
解决代码(重写拷贝构造):
解决原理图
2023-10-15 10:53:28
首先明确什么是浅拷贝:一个类至少提供四种方法1
1.默认构造
2.析构函数
3.拷贝构造
4.赋值运算符operator=
这里的3拷贝构造和4operator=方法,就是直接用“=”号来对数据赋值,也就是浅拷贝
但是如果数据是开辟在堆区(new)那么如果是单纯的用等号来赋值的话,在析构函数中释放堆区数据的时候会报错,为什么呢?
下面是具体错误的代码:
下面是原理图
解决代码(重写拷贝构造):
解决原理图