Re: Fw: [问卦] C++到底难学在哪里

楼主: hizuki (ayaka)   2023-03-13 22:20:49
本来想上班摸鱼回的。我C不敢说记得住标准,至少style没问题,linux kernel也有些提交
meson, cmake都很熟悉。所以编译不是问题。
C++比如说我要return 一个object,要利用RVO要确认几件事?
首先object的class要是movable 的,所以你要实现个移动构造。
然后让经验很老道的人都要编译看看asm,要不要写std.move()
然后这个move constructor就是个很夭寿的东西,为啥要用RVO和move constructor呢?
就是因为不想用raw pointer,好吧这个class的member多半不简单。
可能你们有N个class type的member,你要保证自己没有偷懒,
全部实现好move constructor,不然突然会来一个变copy constructor,
memory用完再释放用fragments 炸死你。
弄了怎么多,还不如一个raw pointer直接过去。
忘记讲了,如果你要return none value,看看c++导入的union和none vlaue的取代。
当然有人讲smart pointer好好用,问题是你把lvalue reference看成什么了?
要改的value不会用这个塞parameter?
再扯到rvalue reference的move constructor还是copy constructor。
这边都还没有到他妈的template,我是用的很开心啊。可是事实并没有那么多
类似的class可用写成个template 或者method变function template。
可是不得不用免得被靠北没有扩展性。
写了几天我觉得glib(gnome)怎么那么亲切,囉哩八嗦的Spring(Java)怎么那么一致。
除非没有时间限制的task,或者和clang, llvm有关的事情,死也不碰C++。
还有种情况是我故意想用复杂的语法堵人嘴,正常的同事是不想研究C++的,会直接放过。
最近开始学rust希望不要又被雷
作者: mmonkeyboyy (great)   2023-03-13 23:28:00
所以functional又兴起了啊
作者: lturtsamuel (港都都教授)   2023-03-13 23:40:00
rust 一个 destructive move 直接解决这篇提到一半以上的问题
作者: michellehot (小废物)   2023-03-13 23:42:00
高手求教教
作者: bnd0327 (阿噗噗)   2023-03-14 00:07:00
rust默认移动语义应该是好很多,但语法也不能说简单
作者: wulouise (在线上!=在电脑前)   2023-03-14 00:25:00
默认move然后写parser超麻烦...移动构造跟复制构造可以讲英文吗?...
作者: Lhmstu (lhmstu)   2023-03-14 01:00:00
rust最近网络上好多人在说
作者: a27417332 (等号卡比)   2023-03-14 01:25:00
怎么感觉你还真的是写没几天就没碰了
作者: saladim (杀拉顶)   2023-03-14 02:05:00
C++很烂 不过你说的很不到位 不是苹果比苹果 歧视炼出现
作者: final01 (牛顿运动定律)   2023-03-14 19:34:00
你到底有没有想过一个raw能解为何人家要想的那么复杂?你前面讲说自己多厉害,结果见解跟刚学程式的人差不多啊zxzd
作者: wulouise (在线上!=在电脑前)   2023-03-15 12:50:00
原PO提交commit的id可以提供瞻仰吗?
作者: legnaleurc (CA)   2023-03-16 00:19:00
没有用过pimpl吗?不确定这边同时提smart pointer和 l reference 是什么意思, 要解决的问题好像不太一样
作者: jack7775kimo (阿庞)   2023-03-16 20:19:00
pimpl是用来降低dependency(intro. by data membersor #includes)
作者: legnaleurc (CA)   2023-03-16 21:37:00
连dereference都不喜欢那真的是多说无益了, 写C吧
作者: leviliang (levi)   2023-04-10 09:52:00
血泪推

Links booklink

Contact Us: admin [ a t ] ucptt.com