- 主题:c++真是快被标准委员会玩成花了啊
文明发言。。。
【 在 iwantfly 的大作中提到: 】
: 就他妈一move语义,别的语言里多面简单,直接一个引用类型搞定
: 这c++, 一会左值一会右值, 一会拷贝构造,一会移动构造
: 一会 std::move一会 std::forward
: 真是够了啊,还没 qt 的对象实现优雅直接
: 多么恶心的语言,恶心的特征
: 做了多少年的孽,为了补救,再泼上一堆屎
: 腐朽的语言,让他死去吧
--
FROM 101.84.200.*
你说的对,真的掌握还真需要了解
【 在 toutouqi 的大作中提到: 】
: “你不需要了解c++的所有细节,也能写出优秀的c++代码”,我觉得这句话是不用的特性不用了解也可以写出好代码。但是要用c++某个特性,不了解细节就很容易写出bug。
--
FROM 153.0.153.*
的确,move是相当重要的,forward这个就很迷。
【 在 tange97 的大作中提到: 】
: Move和forward不是一个层面上的东西。
: Move对程序运行效率是相当重要的。
--
FROM 158.140.1.*
forward也有用,用一种简单的方式保证模板参数在函数间传递时“左值依然是左值,右值依然是右值”,
不然传递的有N个参数的话玩起来就要搞2^N种偏特化才能达到这个效果。
不搞模板则无此烦恼
forward的实现也是一个T &&的cast。这个帖子解释得比较清楚:
https://stackoverflow.com/questions/3582001/what-are-the-main-purposes-of-using-stdforward-and-which-problems-it-solves
没有std::forward,那么std::make_unique<T>(a, b, c, ...)这种就难搞,
因为make_unique函数要把参数a, b, c, ... 转发给T的ctor,
同时还要保证各个参数的值类别不变(左值依然是左值,右值依然是右值)。
也就是说,天天用的std::make_unique、std::make_shared的内部就是std::forward的用武之地。
【 在 allegro 的大作中提到: 】
: 的确,move是相当重要的,forward这个就很迷。
:
--
修改:z16166 FROM 125.35.123.*
FROM 125.35.123.*
不喜欢值语义完全可以用shared_ptr/unique_ptr绕过去嘛,又不麻烦。
--
FROM 183.179.53.*
重复move确实是个坑……
- 来自 水木社区APP v3.5.5
【 在 KillnCov 的大作中提到: 】
: 和rust相比,c++的move就是个半成品,连基本的move后原对象失效检查都做不到。
:
: move的使用复杂度和内存管理是一个级别的。在项目中大规模使用move将是灾难。
--
FROM 183.179.53.*
所以用C++开发时遵循“最佳实践”特别重要。其他语言随便搞搞可能就是丑点乱点,C++随便搞搞就能轻易把程序搞崩。
- 来自 水木社区APP v3.5.5
【 在 allegro 的大作中提到: 】
: 每个人都觉得语言有90%没用,可惜所有人不是同一个90%
--
FROM 183.179.53.*
ha ha
【 在 iwantfly 的大作中提到: 】
: 就他妈一move语义,别的语言里多面简单,直接一个引用类型搞定
: 这c++, 一会左值一会右值, 一会拷贝构造,一会移动构造
: 一会 std::move一会 std::forward
: 真是够了啊,还没 qt 的对象实现优雅直接
: 多么恶心的语言,恶心的特征
: 做了多少
: ..................
发自「今日水木 on iPhone 11」
--
FROM 120.244.129.*
是这样的。我这样不熟悉 std::forward 的开发者可能是比较少遇到这样的需求。反而 std::move 的需求比较常见。
【 在 z16166 的大作中提到: 】
: forward也有用,用一种简单的方式保证模板参数在函数间传递时“左值依然是左值,右值依然是右值”,
: 不然传递的有N个参数的话玩起来就要搞2^N种偏特化才能达到这个效果。
: 不搞模板则无此烦恼
: ...................
--
FROM 222.129.55.*
个人以为,11版后面都是垃圾
委员会的那帮子人早就可以解散了
【 在 iwantfly 的大作中提到: 】
: 就他妈一move语义,别的语言里多面简单,直接一个引用类型搞定
: 这c++, 一会左值一会右值, 一会拷贝构造,一会移动构造
: 一会 std::move一会 std::forward
: ...................
--
FROM 101.86.91.*