作者 hizuki (真女主角愛與正義的天使)標題 Re: Fw: [問卦] C++到底難學在哪裡時間 Mon Mar 13 22:20:49 2023
本來想上班摸魚回的。我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希望不要又被雷
--
起初,皇軍進佔滿州, 我沒有反對,因為我要去滿州撈錢。
接著,皇軍發動對支戰爭, 我沒有反對,因為那是支那人自找苦吃。
後來,皇軍發動太平洋戰爭,我沒有反對,因為看鬼畜米英四處奔逃出了一口惡氣。
以後,鬼畜米英來轟炸, 我全力反對,因為我們台灣是無辜的,這是米英的戰爭罪行
最後,天皇宣布無條件投降,我沒有反對。因為我們台灣人是戰勝國國民,
戰爭責任與我無關,我要有跟戰勝國一樣的物資配給好賺錢,也不要坐祥瑞回家!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 154.3.4.179 (美國)
※ 作者: hizuki 2023-03-13 22:20:49
※ 文章代碼(AID): #1a3p5FIC (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1678717263.A.48C.html
※ 同主題文章:
Re: Fw: [問卦] C++到底難學在哪裡
03-13 22:20 hizuki
※ 編輯: hizuki (154.3.4.179 美國), 03/13/2023 22:27:10
推 lturtsamuel: rust 一個 destructive move 直接解決這篇提到一半以上的問題2F 03/13 23:40
另外還有container template,就算是move constructor對非pointer也是有開銷的,
可是我又想避免pointer包括smart pointer這就沒辦法了。
另外shared pointer的開銷很可觀(因為有lock)
推 bnd0327: rust預設移動語義應該是好很多,但語法也不能說簡單5F 03/14 00:07
推 wulouise: 預設move然後寫parser超麻煩...
移動構造跟複製構造可以講英文嗎?...6F 03/14 00:25
推 Lhmstu: rust最近網路上好多人在說8F 03/14 01:00
※ 編輯: hizuki (154.3.4.179 美國), 03/14/2023 01:09:22
周圍寫的人不多,不過我寫是找了c++頻道一邊寫,一邊review
實際寫的時間大概零零散散加起來有一個月
→ saladim: C++很爛 不過你說的很不到位 不是蘋果比蘋果 歧視鍊出現10F 03/14 02:05
是問哪裡難,我就把我用的時候覺得無所適從的地方列出來而已。
※ 編輯: hizuki (192.147.44.15 美國), 03/14/2023 11:01:24
--