- [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]