深浅拷贝

来源:互联网 发布:无忧seo 编辑:程序博客网 时间:2024/05/21 14:54

深浅拷贝问题的由来:在C++使用过程中我们会用到类,当我们用类定义一个对象,然后用类拷贝构造一个对象时,会调用拷贝构造函数。当然,如果我们的数据成员都是基本数据类型时我们不用担心,但当我们的数据成员指向一定的内存空间,仅仅进行赋值是远远不够的,应为这样当析构时会对同一空间多次释放。
这里写图片描述
这里写图片描述
这样做能解决问题,但是占用内存,我们可以采用引用计数的方法,当计数为0时才释放空间。保证在最后换一个对象释放的时候一直有空间。
这里写图片描述
深浅赋值同理,就是在赋值改变赋值对象时,我们要判断对象原来的count是否–后为0因为被赋值的对象可能原来会有指向,应释放原先的空间再赋值,避免内存泄露。为啥拷贝构造不用是因为拷贝是对象初始化对象,被初始化的对象还不存在,不可能指向空间。

新手,有错误还请指教。

原创粉丝点击