程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++11新特性應用--讓你的程序更簡潔、更漂亮

C++11新特性應用--讓你的程序更簡潔、更漂亮

編輯:C++入門知識

C++11新特性應用--讓你的程序更簡潔、更漂亮


今天舊事重提,再寫一點關於c++11的事兒,注意是說明一下使用C++11使你的程序更加的簡潔,更加漂亮。

說道簡潔,我想最多想到的就是auto關鍵字的使用了。

比如之前你這樣定義一個迭代器:

std::vector::iterator iter = vec.begin();

但是有了auto關鍵字,你就可以少些很多代碼:

auto iter = vec.begin();

好吧,你可能早就不耐煩了,因為你早就非常熟悉auto關鍵字了。

別著急看看下面的!

1使用auto推斷的變量必須馬上初始化
auto不能推斷出下面兩個變量

auto int y;
auto s;

2 auto可以推斷new出來的變量

auto ptr = new auto(1);//ptr為int*類型

3 能分清下面的推斷嗎

int x = 1;

auto *a = &x;//a為int
auto b = &x; //b為int*
auto & c = x;//c為int
auto d = c;  //d為int

const auto e = x;//e為 const int
auto f = e;      //f為int

const auto& g=x; //g為const int&
auto& h=g;       //h為const int&

需要說明的是:
表達式帶有const時,auto推斷會拋棄const,f為int,非const int
auto與引用結合,表達式帶有const時,auto推斷保留const屬性,例如h為const int &

4 auto無法定義數組、無法推斷模板參數

5 編譯時,推導出一個表達式的類型,auto做不到,這時候有關鍵字decltype

int x = 1;
decltype(x) y = 1;//y為int類型

6 decltype與auto相比,可以保留const

const int& i = x;
decltype(i) j = Y;//j為const int &類型

7 兼揉並濟,auto與decltype的結合

template
auto func(T& val)->decltype(foo(val))
{
    return foo(val);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved