1、auto關鍵字
在c++11中,加入了auto關鍵字進行自動型別判斷,省去了大量冗長的型別宣告語句。當你用auto關鍵字時,編譯器可以對你宣告的變數進行自動推導。比如
auto a = 1;
這裡就將a推導為int型。
而我們經常使用vector迭代器,如果不使用auto的話,就會比較繁瑣,比如
std::vectortest_vec;
std::vector::iterator itr = test_vec.iterator();
使用auto之後會簡化**,如下
std::vectortest_vec;
auto itr = test_vec.iterator();
auto可以在同個賦值語句宣告多個變數,不過型別必須相同。否則編譯會出錯。同時,不能宣告auto陣列,std::vector或者類似也不被允許。
2、匿名函式
lambda函式也稱lambda表示式,是乙個可以接收任意多個引數並且返回單個表示式值的函式。
舉個例子:
int add(int a, int b)
利用lambda表示式我們可以這樣寫:
auto fun = (int a, int b);
fun();
// call the function
其中表示接下來開始定義 lambda函式,後面的()填寫的是lambda函式的引數列表,{}就是函式體。我們也可以顯示地指定lambda函式的返回型別,比如:
() -> int
說以總的說lambda函式形式為:
[captures] (params) -> ret
在cocos2d-x 3.0如何使用lambda函式呢,看下面例子:
auto closeitem = menuitemimage::create(
"closenormal.png",
"closeselected.png",
cc_callback_1(helloworld::menuclosecallback,this));
void helloworld::menuclosecallback(object* sender)
使用lambda函式後,
auto closeitem = menuitemimage::create(
"closenormal.png",
"closeselected.png",
(object* sender)
);
C 11新特性之POD型別
pod plain old data 是c 中非常重要的乙個概念,用來描述乙個型別的屬性其中plain表示這個型別是個平凡的型別,old表示其與c的相容性。c 11中將pod劃分為兩個基本概念 平凡的 trival 和標準布局 standardlayout 什麼是平凡性呢?通常乙個平凡的類或者結構體...
C 11新特性 自動型別推斷和型別獲取
當編譯器能夠在乙個變數的宣告時候就推斷出它的型別,那麼你就能夠用auto關鍵字來作為他們的型別 cpp view plain copy auto x 1 編譯器當然知道x是integer型別的。所以你就不用int了。接觸過泛型程式設計或者api程式設計的人大概可以猜出自動型別推斷是做什麼用的了 幫你...
C 11新特性之 nullptr
我們知道在程式設計的世界裡,0有雙重的角色,可以表示整數零,也可以表示乙個空指標。在c語言中,通過預編譯巨集null,可以區分0表示的是零還是 void 0.但是,在c 的世界中,這樣是不可以的。c 中允許函式過載。例如 void foo char void foo int 如果把null定義為0,...