c 11的新特性

2021-10-05 10:06:08 字數 1498 閱讀 7064

1、型別說明符auto

2.decltype提取型別

int a = 0;

decltype(a) b;

b = 10;

cout << b << endl;

3.基於範圍的for迴圈

4.虛函式的override和final指示符

final修飾類:類無法被繼承

final修飾虛函式:虛函式不能被重寫

override就是輔助你檢查是否繼承了想要虛繼承的函式

5.constexpr

其語義是「常量表示式」,也就是在編譯期可求值的表示式

(提供顯式「要求」表示式編譯時(compile-time)求值的方法)

constexpr int inc(int i) 

constexpr int a = inc(1); // ok

constexpr int b = inc(cin.get()); // !error

constexpr int c = a * 2 + 1; // ok

6.noexcept

noexcept可以用來修飾函式,在函式的後面加上noexcept,代表這個函式不會丟擲異常,如果丟擲異常程式就會終止。這個特性在c++11**現很多,主要是為了當程式不該出現異常的地方丟擲異常時終止程式,例如delete函式、析構函式預設都是noexcept

using namespace std;

void print_exp() noexcept

int main()

結果

terminate called after throwing an instance of 'int'

已放棄 (核心已轉儲)

7.匿名函式

int main()

; std::cout << add(1, 2) << std::endl;

return 0;

}

下面解釋了捕獲列表

#include int main()

; std::cout << add(1, 2) << std::endl;

auto add2 = [&c](int a, int b)->int ; // 這種形式也是可以的

std::cout << add2(1, 2) << std::endl;

return 0;

}

shared_ptrpa(new a);

auto_ptrpa1(new a);

unique_ptrpa2(new a);

C 11的新特性

c 11提供在類中定義類的資料成員,可以直接在成員之後新增 預設值 當通過編譯器自動生成的預設建構函式初始化物件時,對應的資料成員就會被初始化成對應的預設值。class test int main 在c 98中,陣列可以使用 來進行初始化,對自定義型別是不可以的。在c 11中,的使用範圍變得更廣,可...

C 11的新特性

1.auto關鍵字 編譯器可以根據初始值自動推導出型別。但是不能用於函式傳參以及陣列型別的推導。2.nullptr關鍵字 nullptr是一種特殊型別的字面值,它可以被轉換成任意其它的指標型別 而null一般被巨集定義為0,在遇到過載時可能會出現問題。3.智慧型指標 c 11新增了std share...

C 11的新特性

1.auto自動變數 vs 2010支援 2.c 11新增模板類array c 11支援對模板類vector的列表初始化。3.c 11新增了另一種引用,右值引用,是使用 宣告的 double j 15.0 double jref 2.0 j 18.5 不能使用double 宣告jref 4.c 11...