C++11 AUTO 類型實踐


auto在C++11中引入,為大家帶來方便。

具體使用及注意事項參考:

https://blog.csdn.net/xiaoquantouer/article/details/51647865

https://www.cnblogs.com/lenmom/p/7988635.html

 

用法:

一是在變量聲明時根據初始化表達式自動推斷該變量的類型。適用於類型冗長復雜,模板類型等

二是在聲明函數時作為函數返回值的占位符

 

注意事項:

1.使用auto關鍵字的變量必須有初始值。類似引用

2.函數參數和模板參數不能被聲明為auto。

3.使用auto關鍵字聲明變量的類型,不能自動推導出頂層的CV-qualifiers和引用類型,除非顯示聲明

使用auto關鍵字進行類型推導時,如果初始化表達式是引用類型,編譯器會去除引用,除非顯示聲明

使用auto使用auto關鍵字進行類型推導時,編譯器會自動忽略頂層const,除非顯示聲明

 

詳見例子

int main()
{
    auto fnum = 3.14;
    auto str("hello");
    cout << "fnum type:" << typeid(fnum).name() << endl;
    cout << "str type:" << typeid(str).name() << endl;

    vector<int> vec;
    auto v_it = vec.begin();
    cout << "v_it type:" << typeid(v_it).name() << endl;

    int int_ori = 5;
    int &ori_b = int_ori;
    auto a = ori_b;
    a = 10;
    cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a << endl;
    auto &b = ori_b;
    b = 20;
    cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a <<" b: " << b <<endl;
    
    const int cint_a = 100;
    auto a2 = cint_a;
    auto const a3 = cint_a;
    cout << "a2 type:" << typeid(a2).name() << " a3 type: " << typeid(a3).name() << endl;

    system("pause");
    return 0;
}

 

 

說明:

auto &b顯示聲明了引用,所以改變了原始值。但 a 並非引用只是被賦值的獨立變量,因此未被b修改

最后的變量 a3是 const int 型如修改值會報錯,而a2是 int 型可以修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM