c++的深拷贝和浅拷贝
2016-04-28 11:39
330 查看
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
在一般没有指针或者引用的对象的拷贝的时候浅拷贝就够了,如果多了指针或者引用的属性的时候就涉及到深拷贝了 ,手动设定拷贝函数,开辟一样大小的内存空间,
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
相关文章推荐
- explicit 关键字
- typedef vs #define
- C++中的dynamic_cast 操作符
- 剖析C数据类型和变量
- C语言调用汇编
- C++11获取时间戳和时间戳转日期(毫秒精度)
- C++静态库与动态库
- PHP多文件程序与C++多文件程序执行的一个区别
- 链表题目整理(C语言实现)
- C++杂谈(三)产生随机数与time函数
- C++ Virtual详解
- C/C++时间函数使用方法
- C或C++中函数的参数传递——值传递、指针传递、引用传递
- C语言查看和设置UDP通信中buffer的默认大小
- c++如何对自定义结构体排序
- C 存储类型摘要
- C/C++ 各种计时函数总结
- C++ override 关键字用法
- C语言链表的基础练习
- C++ map排序(按照value值排序)