首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类对象数组的对拷用什么方法?清空呢?解决思路

2012-04-10 
类对象数组的对拷用什么方法?清空呢?memcpy总是会出现问题比如:xClasstx[10]memcpy(&tx[0],&tx[1],sizeof

类对象数组的对拷用什么方法?清空呢?
memcpy总是会出现问题
比如:
xClass   tx[10];
memcpy(&tx[0],&tx[1],sizeof(tx[1]));
memcpy(&tx[1],&tx[2],sizeof(tx[1]));
memcpy(&tx[2],&tx[0],sizeof(tx[1]));
有不对吗?

还有   用memset设置一个栈内构建的对象后
再给里面的CString变量赋值时会出错!

那清空对象数组中的一个对象如何做到?不写其它函数.

[解决办法]
std::copy/assign
数组没有“清空”概念,用std::vector
[解决办法]
类对象数组的对拷 怎么能用 memcpy 呢?
memcpy是“按位拷贝”,根本没有任何“对象语义”,也就是说根本不会调用copy construtor,所以不可以采用memcpy做这样的工作。


清空对象数组中的一个对象如何做到?
------------------------------------------------
抽象意义上的清空:将数组中的每个对象都析构,即调用它们的destructor。
[解决办法]
交换?用std::swap
[解决办法]
memcpy 对对象操作,这种写法只有在我一开始写代码的时候才会写,现在觉得很怪。
memcpy 一边都值copy,按位复制, 对象之间最好还是用=比较好,调用对象的copy构造函数。

热点排行