天天看點

《深入了解C++11:C++ 11新特性解析與應用》——2.14 本章小結

在本章中,我們可以看到c++11大大小小共17處改動。這17處改動,主要都是為保持c++的穩定性以及相容性而增加的。

比如為了相容c99,c++11引入了4個c99的預定的宏、__func__預定義辨別符、_pragma操作符、變長參數定義,以及寬窄字元連接配接等概念。這些都是錯過了c++98标準,卻進入了c99的一些标準,為了最大程度地相容c,c++将這些特性全都納入c++11。而由于标準的更新,c++11也更新了__cplusplus宏的值,以表示新的标準的到來。而為了穩定性,c++11不僅納入了c99中的long long類型,還将擴充整型的規則預先定義好。這樣一來,就保證了各個編譯器擴充内置類型遵守統一的規則。此外,c++11還将做法不一的靜态斷言做成了編譯器級别的支援,以友善程式員使用。而通過抛棄throw()異常描述符和新增可以推導是否抛出異常的noexcept異常描述符,c++11又對标準庫大量代碼做了改進。

在類方面,c++11先是對非靜态成員的初始化做了改進,同時允許sizeof直接作用于類的成員,再者c++11對friend的聲明予以了一定擴充,以友善通過模闆的方式指定某個類是否是其他類或者函數的友元。而final和override兩個關鍵字的引入,則又為對象程式設計增加了實用的功能。而在模闆方面,c++11則把預設模闆參數的概念延伸到了模闆函數上。而且局部類型和匿名類型也可以用做模闆的實參。這兩個限制的解除,使得模闆的使用中需要記憶的規則又少了一些。而外部模闆聲明的引入,c++11又為很看重編譯性能的使用者提供了一些優化編譯時間和記憶體消耗的方法。

在讀者讀完并了解了這些特性之後,會發現它們幾乎像是一台轟鳴作響的機器上的螺絲釘、潤滑油、電線絲。c++标準委員會則通過這些小修小補,讓c++11已有的特性看起來更加成熟,更加完美。在這一章裡,雖然有的特性會帶來一些“小欣喜”,但我們還看不到脫胎換骨、讓人眼前一亮的新特性。不過這些零散的特性又确實非常重要,是c++發展中必要的“維護”過程的必然結果。

不過如同我們講到的,c++11其實已經看起來像一門新的語言了。在接下來的幾章中,我們會看到更多更“閃亮”的新特性。如果讀者已經等不及了,那麼請現在就翻開下一頁。

繼續閱讀