正在加载图片...
713拷贝与深拷贝 如果类中有一个数据成员为指针, 堆对 该类的一个对象ob]1中的这个指针p, 象 指向了动态分配的一个堆对象,(参见 图71拷贝前),如果用obj1按成员拷 贝了一个对象obj2,这时obj2p也指 向同一个堆对象。当析构时,如用缺省 的析构函数,则动态分配的堆对象不能 回收。如果在析构函数中有“ delete 堆对 p;”语句,则如果先析构函数ob]1时, 象 堆对象已经释放,以后再析构obj2时 出现了二次释放的问题。这时就要重新 定义拷贝的构造函数,给每个对象独立 分配一个堆对象,称 图72深拷贝7.1.3 浅拷贝与深拷贝 如果类中有一个数据成员为指针, 该类的一个对象obj1中的这个指针p, 指向了动态分配的一个堆对象,(参见 图7.1拷贝前),如果用obj1按成员拷 贝了一个对象obj2,这时obj2.p也指 向同一个堆对象。当析构时,如用缺省 的析构函数,则动态分配的堆对象不能 回收。如果在析构函数中有“delete p;”语句,则如果先析构函数obj1时, 堆对象已经释放,以后再析构obj2时 出现了二次释放的问题。这时就要重新 定义拷贝的构造函数,给每个对象独立 分配一个堆对象,称深拷贝。 堆 对 P 象 P 堆 对 象 图7.2 深拷贝
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有