Re: [問題] 為什麼作業系統都用C寫? 而不用C++呢?

看板C_and_CPP作者 (眠月)時間15年前 (2009/03/06 22:17), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串6/37 (看更多)
※ 引述《yehsd (急)》之銘言: : [再次感謝版友 adrianshum 提醒, 我應該說的詳細點] : 和這句, 有沒有矛盾點? : [我想說的是, ctor 是空的, 還是會有 default ctor, 這點如同 adrianshum : 所言. 如果在 instantiation 時指定了自訂的 ctor, compiler 就不會去 generate : default ctor. 所以 littleshan 所說的: constructor 是 compiler 幫你自動 : 呼叫的指的應該是 default ctor? 因為這個 ctor 才是 compiler 會自動呼叫的, : 希望我沒誤解 littleshan 所說的 ^^] 我覺得你這個人不錯, 雖然不太懂 C++,但是會唸書,也會想,以後會很強。 我覺得你不錯, 所以我現在願意花時間打字講些很基本的東西給你看, 首先,一「空的」函數,在經過最佳化以後是不會被呼叫的, 不管他是你自己手寫的,還是編譯器自動生成的都一樣, 這是非常基本非常常見非常簡單的最佳化, 也就是說你所謂那一百萬次的函數呼叫成本其實不存在。 : : 在 C 裡面你可能宣告了變數卻忘了初始化 : : C++ 的 constructor 正好可以避免這種情況 : 這是 C++的優點, 但是也有可能是雙面刃. 你不能這樣說話的, 你得告訴我另外一面是什麼? 不然這個句型太強大了,什麼都能套下去, 我可以說「C 的不用初始化是一個雙面刃」,或說「C 的速度是一個雙面刃」, 但是我不跟你講原因,你會不會覺得我很笑? C++ 出來的早,只是「建議你」初始化, 現在新出來的語言,幾乎都強迫你一定要初始化, 你看,C++ 很卑微的。 : : 的確有時候 C 比 C++ 快 (printf 比 cout 快是不爭的事實) : : 但也有許多 C++ 比 C 快的情況 (例:STL 的 sort 狂勝 C 的 qsort) : : 既然做法不一樣 那比這個也沒什麼意義可言 : 看到這邊, 我只能說我可能真的沒你那麼懂 C++, 小弟不才, : 用 C++ 開發一個比 C 寫出來還快的OS, 這個重責大任就交給比較懂的人囉. 現在懂的不多沒關係,你可以再多念一點, 如果你 CPPPL 真的念得很透的話,應該不會講出上面那些話, 使戳使挫在書裡面對 C++ 的效能提到很多了。 最後是跟程式無關的…… 自己書看不夠的時候,盡量少叫別人看書,感覺不太好,你知道我的意思。 一個人有料的時候,自己可能不會知道。 但是一個人沒料的時候,旁邊的人都看得很清楚。 -- To iterate is human, to recurse is divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.108.87

03/06 22:21, , 1F
手寫的空 ctor 如果定義式放在 .cxx 檔裡,會不會呼叫就要
03/06 22:21, 1F

03/06 22:22, , 2F
看 compiler 跨編譯單元最佳化的支援能力;另外 virtual
03/06 22:22, 2F

03/06 22:22, , 3F
destructor 就算是空的其實要避掉呼叫動作不是那麼簡單。
03/06 22:22, 3F

03/06 22:23, , 4F
不過 compiler 自動產生的空 ctor 確實是很容易省略呼叫。
03/06 22:23, 4F

03/06 22:24, , 5F
學長你害大家都知道我沒料了 XD
03/06 22:24, 5F

03/06 22:28, , 6F
你應該只是懶得打更多字講細節吧,我幫忙補而已 XD
03/06 22:28, 6F
文章代碼(AID): #19iJ2Iw0 (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 6 之 37 篇):
文章代碼(AID): #19iJ2Iw0 (C_and_CPP)