C 11 新特性總結

2021-08-20 00:08:11 字數 1370 閱讀 8039

vs2012以上版本支援

一. auto的使用:

auto func = less();  

//自動表示函式指標

auto ite = vector_a.begin();  

//自動表示stl的迭代器

auto p = new foo();

//自動表示變數指標等變數

二. decltype

int x = 3;  

decltype(x) y = x;

//從變數或表示式中獲得型別

三. nullptr區別於null

nullptr是為了解決原來c++中null的二義性問題而引進的一種新的型別,因為null實際上代表的是0

int a = nullptr; // 編譯失敗,nullptr不能轉型為int  

四. 簡化的for迴圈, 

mapm, , };  

for (auto p : m);  

int a = 2, b = 1;  

for_each(iv.begin(), iv.end(), [b](int &x));    

//[=]使用所有外部變數

for_each(iv.begin(), iv.end(), [=](int &x)->int);

//->int返回值是int

auto pos = find_if(iv.begin(), iv.end(), (int &n)->bool);

auto is_odd = (int n) ;

auto pos1 = find_if(iv.begin(), iv.end(), is_odd);

六. 類成員函式覆蓋override, final

class a

};class b : public a  

// error c3248: 'a::g': function declared as 'final' cannot be overridden by 'b::g'

virtual void g(int)

};七. 更好的定義列舉形式

enum class options ;

options o = options::all;

八. 智慧型指標

unique_ptr:不能拷貝, 只能move

auto_ptr: 廢棄

九. 編譯時斷言

static_assert(size < 3, "size is too small");

static_assert(std::is_integral::value, "type t1 must be integral");

十. 記憶體轉移

std::unique_ptrp2 = std::move(p1);

C 11 實用新特性總結

template classt1,class t2 auto add t1x,t2 y decltype x y 只使用一次的函式物件,能否不要專門為其編寫乙個類?只呼叫一次的簡單函式,能否在呼叫時才寫出其函式體?形式 外部變數訪問方式說明符 參數列 返回值型別語句組 外部變數訪問方式說明符形式 可...

C 11新特性總結 二

c 11 引入了一種更為簡單的for語句,這種for語句可以很方便的遍歷容器或其他序列的所有元素 vectorvec for int x vec 如果要定義指向這個陣列的指標呢 int p arr 10 arr 注意 int p arr 10 表示乙個陣列,有10個元素,元素型別是int 如果要定義...

C 11新特性學習

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