- 主题:c++真是快被标准委员会玩成花了啊
老狗学不会新把戏
有些老狗是发明新把戏的,哈哈
从哲学上讲,是先有的问题,才有的方案。
一,看不懂方案,是对move要解决的问题不了解,而不是看不懂方案、语法
二,记不全方案,是对move问题里的细节或corner case不了解,想不到,类似刚学C语言交换两个变量,要用第三个变量;move是问题复杂语法表达力不足,得加很多隐含规则来推导;放到模板编程里推导就更麻烦了
三,看懂了但觉得方案不合理,往往是因为有了抽象,方案和问题不是直接对应的。类似刚学编程看设计模式,工厂模式创建个对象也要这么多封装吗?或者正交分解,cpp的设计是zero cost,往往不给直接方案,而是给几个小工具,类似removeif + erase
好消息是这玩意儿不属于面向简历编程的部分。不用刷。用不到不用学。没人会责怪你。
【 在 iwantfly 的大作中提到: 】
: 就他妈一move语义,别的语言里多面简单,直接一个引用类型搞定
: 这c++, 一会左值一会右值, 一会拷贝构造,一会移动构造
: 一会 std::move一会 std::forward
: ...................
--
FROM 113.137.164.*
好吧。我不该谈哲学,不该引用"old dog cannot learn new trick"这句话。但我保证不是废话,但我不能保证你最终能弄明白。
你现在到底是遇到了move的什么问题?
看不懂?不会用?
还是只是读一篇技术文章,看懂了对方案不满意,拍案而起,大发雷霆?
【 在 iwantfly 的大作中提到: 】
: 你这就是说一堆废话,没一句在正题上,云里雾里连马哲都套上去了
: 为什么需要move
: 不就是那堆垃圾 std::string 和 容器实现吗
: ...................
--
FROM 38.75.136.*
一我觉得本质是null的表示问题,要表示空,需要一个非空。不评价。
二move在代码库里,一是享受stl里的自然的好处,如swap,二是unique pointer。如果内写一个类型,都煞有介事的实现move copy move assign,不是练手,就是专业的库作者。不是普通情况吧。
【 在 KillnCov 的大作中提到: 】
: 和rust相比,c++的move就是个半成品,连基本的move后原对象失效检查都做不到。
: move的使用复杂度和内存管理是一个级别的。在项目中大规模使用move将是灾难。
--
FROM 124.114.151.*
还有就是,普通的结构体,不实现copy operation 、move operation 、destructor,编译器会生成move版本的操作,放到容器里也能享受一些好处。
总之move除了专业库作者,不会大规模用的。除了unique_ptr future之类,就是享受编译器自己上阵的优化。
【 在 DoorWay 的大作中提到: 】
: 一我觉得本质是null的表示问题,要表示空,需要一个非空。不评价。
: 二move在代码库里,一是享受stl里的自然的好处,如swap,二是unique pointer。如果内写一个类型,都煞有介事的实现move copy move assign,不是练手,就是专业的库作者。不是普通情况吧。
--
FROM 124.114.151.*