《C++語言導(dǎo)學(xué)》筆記

  • [P1]一個可執(zhí)行程序適用于一個特定的硬件/系統(tǒng)組合,不具可移植性。例如Mac上的可執(zhí)行程序無法直接移植到Windows PC。當我們談?wù)揅++程序的可移植性時,通常是指源代碼的可移植性。也就是說,同一份源代碼可以在不同系統(tǒng)上成功編譯并運行。

依然有人不曉得所謂可移植性是什么意思。C++的可移植性是針對源代碼來說的,指的是一次編寫,到處編譯。而Java強調(diào)的是一次編譯,到處運行Java是實現(xiàn)了可執(zhí)行文件的移植性。

  • [P2]ISO的C++標準定義了兩種實體:核心語言特性,標準庫組件。每個C++實現(xiàn)都提供標準庫組件,它們其實也是非常普通的C++代碼。換句話說,C++標準庫可以用C++語言本身實現(xiàn)(僅在實現(xiàn)線程上下文切換這樣的功能時才使用少量機器代碼)。這就確保C++在面對絕大多數(shù)要求較高的系統(tǒng)編程任務(wù)時既有豐富的表達力,同時也足夠高效。

小括號里的信息挺重要,以前沒注意過,也沒遇到過。

  • [P2]C++是一種靜態(tài)類型語言,意味著在使用任何實體(如對象,值,名稱和表達式)時,編譯器都必須清楚該實體的類型。對象的類型決定了能在對象上執(zhí)行的操作。

靜態(tài)語言相較于動態(tài)語言更為高效,無論是CPU還是內(nèi)存。

  • [P6]符號=是一種比較傳統(tǒng)的形式,最早被C語言使用。但是如果拿不準的話,最好在C++中使用更通用的{}列表形式。拋開其他因素不談,使用初始值列表的形式至少可以確保不會發(fā)生某些可能導(dǎo)致信息丟失的類型轉(zhuǎn)換。

編譯器會對等號賦值私下進行類型轉(zhuǎn)換,導(dǎo)致信息丟失。如int i=3.2; i是3,如果用列表的形式 int i{3.2};編譯器會給出提示報錯。

  • [P6]常量在聲明時必須進行初始化,普通變量也只應(yīng)在極有限的情況下不進行初始化。換句話說,在引入一個新名字時最好已經(jīng)有了一個合適的值。

最佳實踐,最好不要忘記初始化。

  • [P7]使用auto可以幫助我們避免冗余,并且無須再書寫長類型名。這一點在泛型編程中尤其重要,因為在泛型編程中程序員很難知道對象的確切類型,類型的名字也可能相當長。

auto的好處。

  • [P]
  • [P]
  • [P]
  • [P]
  • [P]
  • [P]
  • [P]
  • [P]
  • [P]
  • [P]
  • [P]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容