c++的深拷贝和浅拷贝

来源:互联网 发布:大数据 行业专家 编辑:程序博客网 时间:2024/06/13 06:52

c++中深拷贝和浅拷贝的出现时因为他多了指针和引用的概念   本质就是对别的资源的引用  即指向改资源的内存地址

在一般没有指针或者引用的对象的拷贝的时候浅拷贝就够了,如果多了指针或者引用的属性的时候就涉及到深拷贝了 ,手动设定拷贝函数,开辟一样大小的内存空间,

 CCopyTest(const CCopyTest& _copy):size(_copy.size){data=new int[size];memcpy(data,_copy.data,size);}//自定义拷贝构造函数 

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



cocos2dx中,CCCopying定义只是定义了一个copy 拷贝的接口  具体的实现需要子类去实现,ccobject 实现了对象id的引用计数,唯一id

之后研究的是ccnode

0 0
原创粉丝点击