侯捷 C 標準11 14

2021-08-29 03:09:09 字數 2868 閱讀 1746

本篇記錄學習《侯捷 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.拷貝賦...