本篇記錄學習《侯捷 c++標準11-14》
一、演進、環境與資源
(1)、c++ 2.0的新特性,包括語言的部分和標準庫的部分。tr1是2023年的版本,即c++1.0。
二、variadic templates
(1)數量不定的模板引數,引數個數和引數型別都未定。
三、spaces in template expression、nullptr and std--nullptr_t、automatic type deduction with auto
(1)vector> c++11之後可以識別spaces
(2)c++11中,nullptr可以代 替 0 和 null。 0 ——》int型;而nullptr——》void*指標型。而null即是0,又是void*,所以有歧義。
(3)auto型 ——》如果型別很長時,不必指明變數型別,編譯器會進行型別推倒
四、unifrom initialization
(1)初始化變數和物件的方法。unifrom initialization即使用,不過小括號()保留有效。
(2)編譯器一看到,即呼叫initializer_list——》它又呼叫array。
五——六、 initializer_list
(1)initializer_list作引數。
(2)容器 array
七、explicit for ctors taking more than one argument——》(c++2.0中的)
(1)關鍵字 explicit ,不能靠 編譯器來推倒,而是明確的 呼叫的是哪乙個具體的建構函式ctors,才會去呼叫那乙個。
八、range-based for statement
(1)for迴圈的使用:
九、=default, =delete
(1)強制加上關鍵字=default ,預設的建構函式 會被呼叫。
十、alias template 別名模板
(1) 關鍵字using。
十一、template template parameter
(1)模板作為引數
十二、 type alias, noexcept, override, final
(1) type alias 型別化名,類似於 typedefine,也是使用關鍵字 using
(2)noexcept ,例子:void foo() noexcept ——》保證函式foo()不丟出異常。
(3)overwrite
virtual void cfunc(int) overwrite //overwrite用於告訴編譯器,當重新定義虛函式出錯時要報錯
(4)final,修飾類和虛函式,表示 類不可以被繼承,虛函式不可以被複寫。
十三、decltype 關鍵字
(1)decltype (***),用於獲得物件***的型別。
十四、lambdas
(1)lambdas允許定義inline函式。加個小括號(),就可以呼叫。
十五——二十一、variadic templates
(1)... 出現在三個地方:
(2)variadic templates重寫printf函式
(3)使用的是class template:類繼承本類,形成遞迴:
(4)除了上面的繼承遞迴,還有復合遞迴。
二十二、標準庫源**分布
(1)v c++的庫的分布,gnu c++的庫的分布
二十三、 rvalue references and move semantics
(1)rvalue references 右值引用.右值不可以放在左邊;臨時物件就是乙個右值。 &&a
(2)move semantics
二十四、perfect forwarding
(1)unperfect forwarding不完美的轉交
二十五、寫乙個 move-aware class
(1)二十六、 move-aware class 對容器的效能測試
(1)二十七、 容器—結構與分類_舊與新的比較 — 關於實現手法
(1)二十
八、容器 array
二十九、 容器 hashtable
三十、 hash function
(1)三十一、 tuple
(1)遞迴呼叫
C 新標準 侯捷(三) 標準庫
之所以放在標準庫,是因為它雖是語言的部分,但接下來的東西都與標準庫有關。可以幫忙解決不必要的copy。當賦值右邊是乙個右值時,左邊的物件可以偷右邊物件的資源。lvalue 可以出現於operator 左側者 rvalue 只能出現於operator 右側者。我們試驗發現,整數中a b 42是不可以的...
侯捷 C 2 0新特性(C 11 14)
一 語言特性之演進 環境與資源 二 語言特性之 variadic templates 可變引數模板 三 語言特性之 模板表示式中的空格 nullptr auto 四 語言特性之 一致性初始化 initializer list 基於範圍的for迴圈 explicit 五 語言特性之 default,d...
侯捷C 筆記
1.如果是類中唯讀函式後面沒有加上const,這樣如果變數定義成const,而函式沒寫成const,這樣編譯期會困惑。2.相同class的各個物件objects互為友元。3.建構函式初始化用 比 裡面初始化效率更高。4.函式返回值寫成void時,應該考慮鏈式賦值,如果是void就行不通了。5.拷貝賦...