C++11新特性的讀書記錄


第二章 保持兼容

  1. 預定義宏:通過預定義宏,#ifdef #endef等預處理命令,完成代碼的平臺性支持;
  2. func : 反回所在函數名字
  3. #progma 一條預處理指令,
    #progma once :告訴編譯器,該頭文件只被編譯一次
    等同與:
    #ifndef THIS_HEADER
    #define THIS_HEADER
    // 一些頭文件;
    #endif

  4. 變長參數的宏定義和VA_ARGS: (P41)
    FILE, LINE

  5. 寬窄字符串的鏈接
    char - wchar_t:先轉換,再鏈接

  6. long long:在不同的平臺上,可以有不同的長度,但至少是64位
    long long; unsigned long long ;
    信息在中,記錄了LLONG_MIN,LLONG_MAX,ULL_MAX(P42)

  7. 整形的提升:Integral promotion:
    轉化規則:低等級的整形轉化成高等及的,有符號的轉換爲無符號的。

  8. __cplusplus,用來檢測編譯器支持的板本,可以使用#error報錯

  9. 靜態斷言:斷言並不是程序運行時所需要的,而是幫助程序調試。C++ 提供標準assert宏,幫助程序斷言。
    可以使用宏NDEBUG 來禁用宏assert;

  10. 快速初始化成員變量:

  11. 非靜態成員的sizeof:c++11支持對類中非靜態成員使用sizeof
  12. friend 類友元的聲明不再需要使用關鍵字class,而且可以聲明一個類的別名爲類友元;
  13. 虛函數就是給派生類用來重載的。如果不想讓派生類來重寫,就定義爲非虛函數。
  14. final 關鍵字的作用,是禁止派生類重寫final所修飾的需函數,C++11借鑑了java的這種方式。在派生類的過程中,通過final可以任意的終止一個接口的可重載性。
  15. 派生類在虛函數聲明時使用了描述符override,那麼派生類必須重寫其基類中同名函數,否則代碼無法編譯通過。解決繼承結構長、接口錯誤等問題。
  16. extern,外部變量聲明:

    extern int i; // 在聲明處的文件的數據區,不會存在這個變量i ;

  17. 類似外部變量,也存在“外部模板”的問題。在不同的代碼文件中調用func傳入相同類型的參數,會出現多個相同的函數實例。

    template <typename T> void func(T){}
    連接器通過編譯器的輔助手段,會把重複的模板函數刪除。
    使用“外部模板”,可以省略編譯器的實例化和連接器的刪除。節省編譯器和連接器的時間消耗。

  18. 顯示實例化(explicit instantiation):

    template void func<int>(int);
  19. 外部模板聲明

    extern template void func<int>(int);

第三章 通用爲本,專用爲末

  1. 繼承構造函數
    1. C++自定義類型:類!是C++面向對象的基礎。
    2. 類可以自動獲得基類的成員變量和接口,(虛函數,純虛函數,public派生類);
    3. 類的非虛函數無法被派生類使用,包括構造函數;
    4. using::聲明派生類使用基類的成員函數;(76);
    5. 基類的構造函數有默認的參數,派生類不會繼承構造函數的默認參數;默認參數會導致多個構造函數的產生。
      1.
  2. 委派構造函數

    public:
      Info() {InitReset();};
      Info(int i):Info() {type = i;};
      Info(char e):Info() {name = e;};
      // 委派構造函數:目標構造函數(初始化列表位置)
    1. 委派構造:委派函數將構造任務委派給目標函數來完成類的這樣一種構造方式。
  3. 移動語義:

    1. 懸掛指針,不在指向有效的內存,在懸掛指針上釋放內存會產生嚴重的錯誤。
    2. 移動語言:算了吧,沒看懂,下次再看;(91)
  4. 坐值,右值,右值引用

    1. 可以取地址,有名字的是左值,反之是右值
    2. C++11中,右值有兩個概念:將亡值,純右值;
    3. C++11中,所有的值屬於,左值,將亡值,純右值,三者之一(94);
    4. 左值引用和右值引用都是引用類型
    5. 左值引用是具名變量值的別名,右值引用是不具名(匿名)變量的別名。(100)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章