1. 程式人生 > >C++11 AUTO 類型實踐

C++11 AUTO 類型實踐

html begin ali int mage turn http 函數返回值 方便

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 型可以修改

C++11 AUTO 類型實踐