关于C++下深拷贝和浅拷贝的理解


某些情况下我们需要将一个对象赋给另一个对象,其中就有一些值得注意的点。

浅拷贝:

在没有进行运算符的重载时,一般情况下我们定义一个A a(1,2,3);A b;这两个对象,我们会有 b = a; 这就是对象之间的拷贝,也就是会出现深拷贝和浅拷贝,以及一些错误。首先,b = a是一个浅拷贝过程就是将一些数值进行赋值操作。这就出现一个问题,如果类中含有指针,浅拷贝就会出现问题

关于C++下深拷贝和浅拷贝的理解

当a对象析构时,则其指针所指向的空间也就释放,此时b对象中的数据中的指针指向了已经释放了的空间,这样的指针是不合法的,会对其他程序的数据产生破坏。为了防止这类事情的发生,我们就采用运算符重载,来实现对象之间的深拷贝。。理解了这一点,我们就知道,需要同时为a,b两个对象分配同样大小的内存空间,将所需要的数据全部拷贝到自己的空间。对象的数据中的指针指向自己数据空间肯定是合法的。

关于C++下深拷贝和浅拷贝的理解

至于运算符的重载,这个很好理解,就不一一解释了。所想的就是这些。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/819e89ce29daa997c46efcbdb21a9158.html