c++ 11中引入了許多簡化程式設計工作的語法上的新特性,我們暫且美其名曰「語法甜點」。下面一一進行介紹。
語法甜點1:序列for迴圈
序列for迴圈是一種簡化的for迴圈,可用於遍歷一組序列,包括各種容器、string、陣列、初始化列表以及由begin和end函式定義的序列。示例**如下:
1 vectorvcttemp;
2 for (auto a : vcttemp)
3 複製**
語法甜點2:委託建構函式
在引入c++ 11之前,如果某個類有多個過載的建構函式,且這些建構函式中有一些共同的初始化邏輯,通常都需要再編寫乙個帶引數的初始化函式,然後在這些建構函式中呼叫這個初始化函式。在c++ 11中,再也不用這麼麻煩了。我們可以實現乙個最基礎的建構函式,其他建構函式都呼叫這個建構函式。示例**如下:
1 class cperson
2 5 cperson(int nage) : cperson(nage, "")
6 cperson(int nage, const string &strname)
7 12
13 private:
14 string m_strinfo;
15 };
複製**
語法甜點3:統一的初始化語法
在引入c++ 11之前,有各種不同的初始化語法。在c++ 11中,仍可以使用這些初始化語法,但也可以選擇使用新引入的統一的初始化語法。統一的初始化語法用一對大括號{}表示,使用{}初始化語法還可有效地避免窄轉換。示例**如下:
1 int a;
2 char c;
3 int p[5] = ;
4 vectorvcttemp;
5 cperson person;
6 int b = 5.3; // b賦值成5,發生了窄轉換
7 int d; // 會提示編譯錯誤,避免了窄轉換
複製**
語法甜點4:nullptr
nullptr是c++ 11中新加的乙個關鍵字,用於標識空指標。引入nullptr後,可以解決某些函式過載時的二義性問題。示例**如下:
C 11語法auto推導返回
c 不允許直接推導auto返回型別,如果要用auto返回型別,需要用decltype 宣告尾返回型別 如下面 template auto add a x,b y decltype x y 呼叫方式還是和普通的模板元函式一樣 std cout add 5,8 std endl std cout add...
C 11 擴充套件的friend語法
c 98的friend 參見很久以前的隨筆 友元 c 11擴充套件的friend 直接用 說明,示例如下 1 class poly 2typedef poly p 34 class lilei 5 89class jim 10 1314 class hanmeimei 15 宣告了3個型別 lile...
c 11特性之次要語法清除
首先,介紹的是兩個新特性在c 11中,他們是次要的,但是在日常程式設計很重要 空格在模版表示式中 要求輸入空格在兩個 之間 vector ok,在任何c 表示式中 vector ok 在c 11中 在這本書中 你會發現這兩種形式 nullptr和std nullptr t 在c 11中,你能夠使用n...