1. 程式人生 > 其它 >C++11新特性

C++11新特性

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}