C 11的新特性

2022-09-11 12:24:16 字數 2037 閱讀 3825

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中模板函式的改善

(1). c++11新增了關鍵字decltype,解決模板函式中型別定義的問題。

templatevoidft(t1 x, t2 y)

(2). c++11後置返回型別。

auto h(int x, float y) -> double

其中auto是乙個佔位符,表示後置返回型別提供的型別。

5. c++11提供【執行緒儲存持續性】的方案來儲存資料

如果變數是使用關鍵字thread_local宣告的,則其生命週期與所屬執行緒一樣長。

6. 初始化動態分配的常規結構或陣列(需要用大括號)

struct where

where* pi = new where ;//c++11

int *pj = new int [3] ;//c++11

同樣,列表也可用於單值初始化。

7. c++11中,可將列表初始化運用到類(就像應用於結構和陣列那樣)。

//

若stock類的建構函式宣告如下(此處有預設引數):

stock::stock(const std::string & co, longn = 0, double pr = 0.0

);//

則stock類的物件可以用列表初始化:

stock hot_tip = ;

c++11提供了名為std::initialize_list的類,可將其作為函式引數或方法引數的型別。

8. 在c++98中只能使用這種技術宣告值為整數或列舉的靜態常量,而不能儲存double常量。(但c++11消除了這個限制)

9.c++11提供了一種新的列舉——作用域內列舉(其列舉的作用域為類):

enum class egg ;// or enum struct egg ;

可以使用作用域解析運算子訪問列舉成員。

列舉類成員不能像常規列舉一樣,隱式地轉換為某種底層整型型別(提高了作用域內列舉的型別安全),但可以進行強制型別轉換。.

c++11 可以選擇底層整型型別(預設為int):

enum class : short egg ;//:short將底層整型型別指定為short

10.在c++98中,關鍵字explicit不能用於轉換函式,但c++11消除了這個限制,在c++11中可將轉換運算子宣告為顯式的。

11.c++11新增關鍵字nullptr來表示空指標。(vs 2010支援)

12.c++11允許類內初始化

class

classy;//

等價於成員初始化列表

classy::classy() : mem1(10), mem(20

) //

c++11類內初始化過的類,覆蓋成員函式的預設值

classy::classy(int

n) : mem1(n)

13.禁用預設函式的方法:

1. 將函式宣告為私有的;

2. c++11 使用關鍵字delete實現。

14.c++11新增了一項功能——使用模板提供一系列別名:

templateusing arrtype = std::aray12>;

//模板別名arrtype的使用

arrtype days;

c++11還支援可變引數模板

c 11的新特性

1 型別說明符auto 2.decltype提取型別 int a 0 decltype a b b 10 cout b endl 3.基於範圍的for迴圈 4.虛函式的override和final指示符 final修飾類 類無法被繼承 final修飾虛函式 虛函式不能被重寫 override就是輔助...

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...