C++11 最常用的特性

1. 序列for循環(huán) Range-based for loops

這是不需要多說铺浇,很多語言都有的特性籽御,可以方便的進(jìn)行遍歷:

 int array[3]={1,2,3};
 for (auto val:array){
 cout << val <<endl;
 }

2.強(qiáng)類型枚舉 Strongly-typed enums

在傳統(tǒng)C++中腻异,枚舉類型被視為整數(shù)呛哟,這使得兩種不同的枚舉類型之間可以進(jìn)行比較垢袱。C++03 規(guī)定一個(gè)枚舉型值不能隱式轉(zhuǎn)換到另一個(gè)枚舉類型幌甘,但是枚舉變量的名稱仍然暴露在外層作用域中窖式,如:

enum Hand{ Right, Left };
enum Result{ Wrong, Right }; // error

C++11 引進(jìn)了強(qiáng)類型枚舉蚁飒,由關(guān)鍵字enum class標(biāo)識(shí),它不會(huì)導(dǎo)致同一作用域下的枚舉常量出現(xiàn)命名沖突萝喘,也不會(huì)隱式轉(zhuǎn)換為整形淮逻。

enum class Season{Spring, Summer=1, Autumn, Winner};
enum class Vacation{Summer, Winner};
Season s = Season::Summer; 
if(s==1) //  error: no match for 'operator==' (operand types are 'Season' and 'int')
{
    cout << "nice" <<endl;
}

3.可變參數(shù)模板 Variadic templates

C++11新引入了參數(shù)包機(jī)制,概念如下:

  • 模板參數(shù)包(template parameter pack):模板參數(shù)位置上的變長(zhǎng)參數(shù)(例子中的Types)阁簸,可以打包0到多個(gè)參數(shù)爬早。
  • 函數(shù)參數(shù)包(function parameter pack):函數(shù)參數(shù)位置上的變長(zhǎng)參數(shù)(例子中的args)。

參數(shù)包在使用時(shí)要進(jìn)行展開(Expanded)启妹,語法是包名加上三個(gè)點(diǎn)筛严,如Types...。下面用遞歸方式展開參數(shù)包的示例:

template <typename ... Ts>
void unpack(Ts... ts){}

template <typename T>
T output(T t){
    cout << t << "," << endl;
    return t;  // 必須返回t饶米,作為dummy
}

template <typename ... Types>
void func_t(Types ... args){
    unpack( output(args)... ); // 注意這里的expand方式
}

func_t(1,2,3); // => 3,2,1,

4.lambda函數(shù)

該特性可以讓我們愉快的使用匿名函數(shù):

 int a=3;
 int b=4;
 auto func = [](int x, int y){return x+y;};
 cout << func(a,b) << endl; // 像普通函數(shù)一樣調(diào)用
 cout << [=]{return a*2;}() <<endl; // 捕獲上下文變量桨啃,直接調(diào)用

再來看匿名函數(shù)的定義:

[capture](parameters) mutable ->return-type {statement}
  1. [capture]:捕捉列表。捕捉列表總是出現(xiàn)在Lambda函數(shù)的開始處檬输。編譯器根據(jù)該引出符判斷接下來的代碼是否是Lambda函數(shù)照瘾。捕捉列表能夠捕捉上下文中的變量以供Lambda函數(shù)使用;
  2. (parameters):參數(shù)列表。與普通函數(shù)的參數(shù)列表一致丧慈。如果不需要參數(shù)傳遞析命,則可以連同括號(hào)“()”一起省略;
  3. mutable:mutable修飾符。默認(rèn)情況下逃默,Lambda函數(shù)總是一個(gè)const函數(shù)鹃愤,mutable可以取消其常量性。在使用該修飾符時(shí)笑旺,參數(shù)列表不可省略(即使參數(shù)為空);
  4. ->return-type:返回類型。在不需要返回值的時(shí)候可以連同符號(hào)”->”一起省略馍资。在返回類型明確的情況下也可以省略筒主,讓編譯器對(duì)返回類型進(jìn)行推導(dǎo);
  5. {statement}:函數(shù)體,除了可以使用參數(shù)之外鸟蟹,還可以使用所有捕獲的變量乌妙。

語法上,在“[]”包括起來的是捕捉列表建钥,捕捉列表由多個(gè)捕捉項(xiàng)組成藤韵,并以逗號(hào)分隔。捕捉列表有以下幾種形式:

  • [] 不捕捉任何變量
  • [&} 捕捉外部作用域中所有變量熊经,并作為引用在函數(shù)體中使用
  • [=] 捕捉外部作用域中所有變量泽艘,并拷貝一份在函數(shù)體中使用
  • [=, &foo] 捕捉外部作用域中所有變量欲险,并拷貝一份在函數(shù)體中使用,但是對(duì)foo變量使用引用
  • [bar] 捕捉bar變量并且拷貝一份在函數(shù)體重使用匹涮,同時(shí)不捕捉其他變量
  • [x, &y] x按值傳遞天试,y按引用傳遞
  • [this] 捕捉當(dāng)前類中的this指針。如果已經(jīng)使用了&或者=就默認(rèn)添加此選項(xiàng)然低。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喜每,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雳攘,更是在濱河造成了極大的恐慌带兜,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吨灭,死亡現(xiàn)場(chǎng)離奇詭異刚照,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)沃于,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門涩咖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人繁莹,你說我怎么就攤上這事檩互。” “怎么了咨演?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵闸昨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我薄风,道長(zhǎng)饵较,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任遭赂,我火速辦了婚禮循诉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撇他。我一直安慰自己茄猫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布困肩。 她就那樣靜靜地躺著划纽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锌畸。 梳的紋絲不亂的頭發(fā)上勇劣,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音潭枣,去河邊找鬼比默。 笑死幻捏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的退敦。 我是一名探鬼主播粘咖,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼侈百!你這毒婦竟也來了瓮下?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤钝域,失蹤者是張志新(化名)和其女友劉穎讽坏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體例证,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡路呜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了织咧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胀葱。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笙蒙,靈堂內(nèi)的尸體忽然破棺而出抵屿,到底是詐尸還是另有隱情,我是刑警寧澤捅位,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布轧葛,位于F島的核電站,受9級(jí)特大地震影響艇搀,放射性物質(zhì)發(fā)生泄漏尿扯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一焰雕、第九天 我趴在偏房一處隱蔽的房頂上張望衷笋。 院中可真熱鬧,春花似錦矩屁、人聲如沸辟宗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慢蜓。三九已至亚再,卻和暖如春郭膛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氛悬。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工则剃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耘柱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓棍现,卻偏偏與公主長(zhǎng)得像调煎,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子己肮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容