- 主题:c++真是快被标准委员会玩成花了啊
可不可以这样理解,move就是不保证输入参数数据完整性的拷贝,目的是为了某些情况下减少内存拷贝?
用move的场景,如果改用指针,对象指针直接赋值,再把原指针赋0,连普通成员变量的拷贝都省了,看起来似乎比用move概念更清楚。不知道啥场景必须设计成用move而不用指针?
【 在 z16166 的大作中提到: 】
: copy/move涉及的是对象内部的数据/状态的复制、转移操作,跟对象的所有权不是一回事。
: 比如:
: 对象A内部分配了一个内存缓冲区保存在其成员m_ptr里:
: ...................
--
FROM 223.104.3.*
我习惯第二种,虽然指针有需要删除的麻烦。第一种,move会让编译器直接把临时变量的地址存到容器(比如vector)里,还是也得造个对象然后调用move拷贝函数进行成员变量的拷贝?另外,第一种如果对容器vector初始化(比如10个元素),相当于得调用10遍元素类的构造函数,而指针就没有这个问题。
【 在 z16166 的大作中提到: 】
: 举一个场景:
: 有一个结构,我们要parse一些json数据,用parse出来的数据填充这个结构的各个字段,
: 然后把这个结构插入到表里(map/set/vector里)
: ...................
--
FROM 223.104.38.*
如果不是地址直接给容器,看起来第一种很多情况下也不会快啊,该拷贝还得拷贝。
【 在 z16166 的大作中提到: 】
: 第二种是裸指针,全手动管理内存,也容易搞出异常时不安全的代码,应该一般是不推荐的。
: 第一种是不会存临时变量地址到表里的,不然那个写法就是错误的,不能用。
:
--
FROM 223.104.38.*
“你不需要了解c++的所有细节,也能写出优秀的c++代码”,我觉得这句话是不用的特性不用了解也可以写出好代码。但是要用c++某个特性,不了解细节就很容易写出bug。
【 在 RichyMong 的大作中提到: 】
: 很同情你,觉得是坨屎,还不得不吃下去。有句话说得好: 你不需要了解c++的所有细节,也能写出优秀的c++代码,除非你想成为语言律师。没必要觉得凡自己用不上就多余,也没必要因为自己理解不了就是语言问题,这不是多新的特性,谷歌搜一大把,讲得清清楚楚。有发牢骚功夫估计已经快看完了。
: 发自「今日水木 on iOS」
--
FROM 123.123.43.*