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