C 11 新特性之std move

2021-09-26 05:05:51 字數 849 閱讀 4735

面試的時候被問到了c++11新特性,感覺答的不好,所以回來重新總結下:

首先 std::move是乙個標準庫函式。

雖然不能將乙個右值引用直接繫結到乙個左值上,但是可以顯式的將乙個左值轉換為對應的右值引用型別。我們可以呼叫move來獲得繫結到左值上的右值引用,標頭檔案為。

int && rr3=std::move(rr1);
move告訴編譯器:我們有乙個左值,但我們希望像乙個右值一樣處理它。但是這也意味著:除了對rr1賦值或者銷毀它,我們將不再使用它(移動源物件的值)。

#include // move (ranges)

#include // move (objects)

#include #include #include #include #include using namespace std;

int main()

; vectorves2(3);

vectorves3(4);

cout<

for(int i:ves1) cout<

#include #include #include #include #include using namespace std;

int main()

{ string old="hello world";

cout<

C 11新特性之 nullptr

我們知道在程式設計的世界裡,0有雙重的角色,可以表示整數零,也可以表示乙個空指標。在c語言中,通過預編譯巨集null,可以區分0表示的是零還是 void 0.但是,在c 的世界中,這樣是不可以的。c 中允許函式過載。例如 void foo char void foo int 如果把null定義為0,...

c 11新特性之auto

在早期版本中,auto關鍵字用來宣告具有自動儲存器的區域性變數,auto關鍵字很少被使用,除了靜態變數之外,其它的變數預設是auto的。因此,在c 11中,刪除了原有的功能,並對其重新設計,增加了auto的型別推導功能。template double add t1 a,t2 b int main i...

C 11 新特性之 lambda

這是c 11新特性介紹的第三部分,涉及到c 11這次更新中較為重要的lambda表示式。不想看toy code的讀者可以直接拉到文章最後看這部分的總結。熟悉python的程式設計師應該對lambda不陌生。簡單來說,lambda就是乙個匿名的可呼叫 塊。在c 11新標準中,lambda具有如下格式 ...