C++11新特性
阿新 • • 發佈:2021-08-05
C++的發展
C++11的新特性
auto
可以從初始化表示式中推斷出變數的型別,屬於編譯器特性,不影響最終的機器碼
auto a = 10;
auto str = "hello";
auto p = new Person();
p->run();
decltype
可以獲取變數的型別和OC中的typeof一樣
int a = 10;
decltype(a) b = 20;
nullptr
主要解決NULL的二義性問題
void func(int v) { cout << "func(int v)" << endl; } void func(int *v) { cout << "func(int *v)" << endl; } int main(){ func(NULL); //無法分辨是哪個函式 return 0; }
快速遍歷
int array[] = {11,2,33,44,55};
for(int i : array) {
cout << i << endl;
}
Lambda 表示式
Lambda表示式
有點類似於JavaScript中的閉包、iOS中的Block,本質就是函式
完整結構: [capture list] (params list) mutable exception-> return type { function body }
✓ capture list:捕獲外部變數列表
✓ params list:形參列表,不能使用預設引數,不能省略引數名
✓ mutable:用來說用是否可以修改捕獲的變數
✓ exception:異常設定
✓ return type:返回值型別
✓ function body:函式體
有時可以省略部分結構
✓ [capture list] (params list) -> return type {function body}
✓ [capture list] (params list) {function body}
✓ [capture list] {function body}