读书人

C++基础之4:深拷贝和浅拷贝

发布时间: 2013-09-12 22:07:04 作者: rapoo

C++基础之四:深拷贝和浅拷贝
1.普通类型对象的拷贝

普通类型对象的拷贝很简单,就是值的复制而已。比如:

class CCopyTest{public:CCopyTest(int _size):size(_size){data=new int[size];}~CCopyTest(void){delete []data;}CCopyTest(const CCopyTest& _copy):size(_copy.size){data=new int[size];memcpy(data,_copy.data,size);}//自定义拷贝构造函数private:int size;int* data;};

这里还要注意一点,拷贝构造函数必须采用引用传参的方式,而不能采用值传参,因为值传参本身就要进行值拷贝,调用拷贝构造函数会引起无限循环嵌套,编译器会报错,栈溢出。VS和GCC中都会报错。


5.总结

总之,在对进行对象拷贝时,当对象包含对其他资源的引用,如果需要拷贝这个对象所引用的对象,那就是深拷贝,否则即是浅拷贝。





读书人网 >C++

热点推荐