- 主题:c++真是快被标准委员会玩成花了啊
谢谢。很清楚。
看起来这样也没必要纠结,编译后的伪汇编代码了。
【 在 z16166 的大作中提到: 】
: copy/move涉及的是对象内部的数据/状态的复制、转移操作,跟对象的所有权不是一回事。
: 比如:
: 对象A内部分配了一个内存缓冲区保存在其成员m_ptr里:
: ...................
--
FROM 114.249.23.*
老狗学不会新把戏
有些老狗是发明新把戏的,哈哈
从哲学上讲,是先有的问题,才有的方案。
一,看不懂方案,是对move要解决的问题不了解,而不是看不懂方案、语法
二,记不全方案,是对move问题里的细节或corner case不了解,想不到,类似刚学C语言交换两个变量,要用第三个变量;move是问题复杂语法表达力不足,得加很多隐含规则来推导;放到模板编程里推导就更麻烦了
三,看懂了但觉得方案不合理,往往是因为有了抽象,方案和问题不是直接对应的。类似刚学编程看设计模式,工厂模式创建个对象也要这么多封装吗?或者正交分解,cpp的设计是zero cost,往往不给直接方案,而是给几个小工具,类似removeif + erase
好消息是这玩意儿不属于面向简历编程的部分。不用刷。用不到不用学。没人会责怪你。
【 在 iwantfly 的大作中提到: 】
: 就他妈一move语义,别的语言里多面简单,直接一个引用类型搞定
: 这c++, 一会左值一会右值, 一会拷贝构造,一会移动构造
: 一会 std::move一会 std::forward
: ...................
--
FROM 113.137.164.*
你这就是说一堆废话,没一句在正题上,云里雾里连马哲都套上去了
为什么需要move
不就是那堆垃圾 std::string 和 容器实现吗
qt的 QString就不需要这种垃圾玩意
为了弥补当初标准库设计的缺陷, 再设计一堆概念去弥补它, 在上面贴一堆膏药
这是一个根本性的缺陷, 不理解move可以说就没法使用c++的标准库
如此重要的特性为什么到c++11了才出现? 前面c++委员会吃了 50年屎吗?
因为这是语言设计上的缺陷,是面向对象在语义上与c的值语义存在冲突
对象就是独一无二的,不能像值一样随意复制, 容器管理对象不应进行复制
这不是开发者的问题,也不是现实业务需求产生的问题,
这他妈就是就是语言设计者和委员会的锅, c++的设计理念就是存在严重的问题
【 在 DoorWay 的大作中提到: 】
: 老狗学不会新把戏
: 有些老狗是发明新把戏的,哈哈
: 从哲学上讲,是先有的问题,才有的方案。
: ...................
--
FROM 221.219.211.*
你是说语言不应该提供那么多灵活性是吗
【 在 iwantfly 的大作中提到: 】
:
: 你这就是说一堆废话,没一句在正题上,云里雾里连马哲都套上去了
: 为什么需要move
: 不就是那堆垃圾 std::string 和 容器实现吗
: qt的 QString就不需要这种垃圾玩意
#发自zSMTH@ELE-AL00
--
FROM 223.72.63.*
好吧。我不该谈哲学,不该引用"old dog cannot learn new trick"这句话。但我保证不是废话,但我不能保证你最终能弄明白。
你现在到底是遇到了move的什么问题?
看不懂?不会用?
还是只是读一篇技术文章,看懂了对方案不满意,拍案而起,大发雷霆?
【 在 iwantfly 的大作中提到: 】
: 你这就是说一堆废话,没一句在正题上,云里雾里连马哲都套上去了
: 为什么需要move
: 不就是那堆垃圾 std::string 和 容器实现吗
: ...................
--
FROM 38.75.136.*
你说的,这几个没啥毛病。 真恶心的东东,你还没接触到,再看看c++17 和 20.
--
FROM 115.197.244.*
也不能灵活到连做最基本的集合操作
都给你下好几个套
【 在 cpper 的大作中提到: 】
: 你是说语言不应该提供那么多灵活性是吗
: #发自zSMTH@ELE-AL00
--
FROM 221.219.211.*
可不可以这样理解,move就是不保证输入参数数据完整性的拷贝,目的是为了某些情况下减少内存拷贝?
用move的场景,如果改用指针,对象指针直接赋值,再把原指针赋0,连普通成员变量的拷贝都省了,看起来似乎比用move概念更清楚。不知道啥场景必须设计成用move而不用指针?
【 在 z16166 的大作中提到: 】
: copy/move涉及的是对象内部的数据/状态的复制、转移操作,跟对象的所有权不是一回事。
: 比如:
: 对象A内部分配了一个内存缓冲区保存在其成员m_ptr里:
: ...................
--
FROM 223.104.3.*
确实吃饱了撑的,90%特性都没用,语言的发展趋势应该是越来越简洁,简化编程,而不是越来越复杂难用
--
修改:god4 FROM 153.0.153.*
FROM 153.0.153.*
每个人都觉得语言有90%没用,可惜所有人不是同一个90%
【 在 god4 的大作中提到: 】
: 确实吃饱了撑的,90%特性都没用,语言的发展趋势应该是越来越简洁,简化编程,而不是越来越复杂难用
--
FROM 158.140.1.*