C 11新特性 隨時增補

2022-05-30 14:00:15 字數 1315 閱讀 1090

對於不經常使用c++11新特性的我,偶爾遇到新的寫法就會懵,在此處做一下筆記。

雖然也有c++11 這本書,也會順手去查,但畢竟網上的例子比較生動,我會摘抄其他人的一些筆記。

1、auto用在for迴圈

int arr[10

];for(int i=0;i<10;i++)

for(auto &a:arr)

輸出的結果就是0—9這十個數。

for(auto &a : arr)中「auto &a」就是變數名就和上乙個for迴圈中的「int i」一樣,

與for(int i=0;i參考部落格:

2、智慧型指標

unique_ptr 是auto_ptr的公升級版,並且auto_ptr在c++11中已經失效。

unique_ptr 是乙個獨享所有權的智慧型指標:

1、擁有它指向的物件

2、無法進行複製構造,無法進行複製賦值操作。即無法使兩個unique_ptr指向同乙個物件。但是可以進行移動構造和移動賦值操作

3、儲存指向某個物件的指標,當它本身被刪除釋放的時候,會使用給定的刪除器釋放它指向的物件

unique_ptr 可以實現如下功能:

1、為動態申請的記憶體提供異常安全

2、講動態申請的記憶體所有權傳遞給某函式

3、從某個函式返回動態申請記憶體的所有權

4、在容器中儲存指標

5、auto_ptr 應該具有的功能

我們可以通過「.」操作訪問指標,通過「->」來訪問它指向的物件,shared_ptr 是一樣的。

unique_ptrp1(new ptest("

ceshi1

"));

unique_ptr

p2(new ptest("

p2 test

"));

p1->print();

p1->set("

ceshi2");

p1->print();

p1.reset();

p1 =std::move(p2);

if (p2 ==nullptr)

p1->print();

ptest *p =p1.release();

p->print();

p2.reset(p);

p2->print();

p1 =function();

p1->print();

注意release函式是讓指標和指標指向的物件脫離關係,並沒銷毀,要想銷毀,呼叫reset乙個空物件。

參考部落格:

C 11新特性學習

lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...

C 11 新特性試用

在c 11之前,auto關鍵字用來指定儲存期。在新標準中,它的功能變為型別推斷。auto現在成了乙個型別的佔位符,通知編譯器去根據初始化 推斷所宣告變數的真實型別。各種作用域內宣告變數都可以用到它。例如,名空間中,程式塊中,或是for迴圈的初始化語句中。auto i 42 i is an int a...

C 11 新特性總結

vs2012以上版本支援 一.auto的使用 auto func less 自動表示函式指標 auto ite vector a.begin 自動表示stl的迭代器 auto p new foo 自動表示變數指標等變數 二.decltype int x 3 decltype x y x 從變數或表示...