返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #80735同步于 2014/7/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]为什么不允许拷贝数组,其意义何在?
chenheng1989
2014/7/8镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
嗯,可以的,我想知道既然可以实现,为什么不允许呢,是没完善还是在避免什么问题呢
【 在 jiafeiali 的大作中提到: 】
: 你想拷贝可以自己实现啊,自定一个类,加几个方法就可以了吧
lz的问题就好比为什么没有3块、4块面额的钞票一样
【 在 chenheng1989 (麦田守望者) 的大作中提到: 】
: 嗯,可以的,我想知道既然可以实现,为什么不允许呢,是没完善还是在避免什么问题呢
通过『我邮2.0』发布
谁说没有了,memcpy, strcpy, c++11的copy,都是啊。
没有内置的copy只是防止滥用和防歧义,c++数组本质是常量指针,两个数组变量对应的数组大小且不说不一定一样直接拷贝过去没准内存溢出,常量指针更是不能直接赋值,为了效率(你难道想自带边界检查类型检查异常处理?),当然不能让你两个数组互相之间拷贝赋值。
想数组直接拷贝请用py之类动态语言,类型检查都帮你做了,至于效率就呵呵了。还有,别忘了分清深拷贝和浅拷贝。
c++ 11有数组模板。
array<char,256> data = {{0x00,0x22,.....}};
auto b=data;
随便拷,并且是深拷贝。
【 在 colorest 的大作中提到: 】
: 谁说没有了,memcpy, strcpy, c++11的copy,都是啊。
: 没有内置的copy只是防止滥用和防歧义,c++数组本质是常量指针,两个数组变量对应的数组大小且不说不一定一样直接拷贝过去没准内存溢出,常量指针更是不能直接赋值,为了效率(你难道想自带边界检查类型检查异常处理?),当然不能让你两个数组互相之间拷贝赋值。
: 想数组直接拷贝请用py之类动态语言,类型检查都帮你做了,至于效率就呵呵了。还有,别忘了分清深拷贝和浅拷贝。
【 在 grapland 的大作中提到: 】
: c++ 11有数组模板。
: array<char,256> data = {{0x00,0x22,.....}};
: auto b=data;
: ...................
我知道这个啊- - C++11都能直接数组给vector赋值了。。。
受教了
【 在 colorest 的大作中提到: 】
: 谁说没有了,memcpy, strcpy, c++11的copy,都是啊。
: 没有内置的copy只是防止滥用和防歧义,c++数组本质是常量指针,两个数组变量对应的数组大小且不说不一定一样直接拷贝过去没准内存溢出,常量指针更是不能直接赋值,为了效率(你难道想自带边界检查类型检查异常处理?),当然不能让你两个数组互相之间拷贝赋值。
: 想数组直接拷贝请用py之类动态语言,类型检查都帮你做了,至于效率就呵呵了。还有,别忘了分清深拷贝和浅拷贝。