亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++第11版本中的一些強大的新特性小結

2020-01-26 14:47:44
字體:
來源:轉載
供稿:網友

Auto Type Deduction 自動類型推導

auto 關鍵字讓用戶得以使用 C++ 內置的類型推導特性。

std::string something = somethingthatreturnsastring.getString();auto something = somethingthatreturnsastring.getString();

Auto 關鍵字會對上述自變量(something)進行自動推導,得出其應該是 string 類型的結論,并在 auto 出現的地方用正確的類型進行替換。這個特性對迭代器特別有用。

for(std::vector<T>::iterator it = x.begin(); it != x.end(); i++){  it->something();}

上述代碼可以寫成:

for(auto it = x.begin(); it != x.end(); i++){  it->something();}

贊! 代碼看上去簡潔多了!

Strongly Typed Enums 強類型枚舉

這個特性可以有效避免枚舉類型的命名沖突,從而消除很多潛在的 bug。在舊版本的 C++ 中,程序員必須為每一個枚舉項設定一個全局唯一的名字。例如,如果你給一個枚舉項取名叫 None,那么其他的枚舉集合就不能再用這個名字了。但是現在,你可以這么做了?。ㄗg注:作者下面給的例子仿佛和上面的文字不是非常搭配//myEnum ::All 和 myEnum::All是不是存在差異?)

enum class myEnum {None, One, All};myEnum o = myEnum ::All;auto p = myEnum::All; // 同樣有效

Lambdas 表達式

Lambda 表達式簡單說就是個匿名函數(譯注:原文為in-place function,意思是“用來鑲嵌的函數”,但是匿名函數能更精確表達這個含義)。對于迭代器以及for 循環非常有用,這種函數你只需要在程序的某一處使用一次,所以沒有必要專門在程序里明確定義它。Lambda 表達式并沒有讓 C++ 在邏輯表達上做到“及以往之不可及”的程度,它是一種受函數式編程思想影響而引入的語言特性,能夠讓程序更緊湊。Lambda 表達式的最簡形式是下面這樣的:

[]() { }

加上所有可能的操作符,會是這樣:

[]() mutable -> T { }
其中[]是捕獲列表,()是參數列表,{}是函數體

Capture List 捕獲列表

捕獲列表定義了什么類型的東西可以從 Lambda 表達式之外匹配到函數體中來??梢园韵逻@些:

一個值:[x]
一個引用 [&x]
當前范圍內任意變量的引用 [&]
同3,但是通過變量的值
你可以對上面的各項進行任意混合,只要用逗號隔開即可 [x, &y]

Argument List 參數列表

參數列表和 C++ 函數的參數列表是一個概念。

Function Body 函數體

函數體是指在 Lambda 表達式被調用時真正執行的代碼。

Return Type Deduction

返回值推斷

如果 Lambda 表達式只有一個返回聲明,那么返回值類型就可以省略,其類型就是隱式類型:decltype(return_statement)

可變 Labmda

如果一個 Lambda 表達式被標記為 mutable(例如:[]() mutable{ }),那么對于按值捕獲的數值來說,在函數體內就允許對這些值進行修改操作。

下面舉個例子:

int main(){  char s[]="Hello World!";  int Uppercase = 0; //lambda會改變這個變量的值  for_each(s, s+sizeof(s), [&Uppercase] (char c) {  if (isupper(c))   Uppercase++;  }); cout<< Uppercase<<" uppercase letters in: "<< s<<endl;}

Unique 指針

Unique 指針是 C++11 版本的智能指針類。

一旦你用 unique_ptr 關鍵字定義了一個對象,那么下列事件只要發生一個,對象就會被銷毀并釋放內存:

unique_ptr 管理的對象被銷毀。
unique_ptr 管理的對象通過賦值操作符指向另一個指針,或調用了reset()方法。
對于不想了解太多細節的用戶來說,這就意味著如果你使用了 unique 指針的語義,那么在跳出作用域之前,你就不用手動回收對象的內存了。

以前,我們需要這么寫代碼:

YourObject * obj = new YourObject();

然后在程序的最后你一定要記得釋放內存:

delete(obj);
否則你可就造成內存泄露了。而現在,

std::unique_ptr<YourObject> obj(new YourObject());

當 obj 跳出作用域范圍之外的時候,內存將會被自動回收。

static_assert

static_assert 簡單說就是一個在編譯期執行的斷言。例如,你可以這么做:

static_assert(sizeof(unsigned int) * CHAR_BIT == 32);

假設由于系統的原因造成了上述的邏輯判斷的失敗,那么 static_assert 就會斷言失敗。

它的另一種用途,是和 C++ 特征類型搭配使用。比如:

static_assert(std::is_pod<yourstruct>::value, "Not a pod struct!");

POD 是指“簡單數據”(Plain Old Data)結構,也就是說,它是一個的類(你可以用struct關鍵字定義,也可以用class關鍵字定義),但沒有構造函數,析構函數和虛成員函數。所以,如果一個愚蠢的菜鳥程序員企圖給這種類型增加構造函數的話,static_assert 就會在編譯的時候阻止這種行為,并報錯。這對代碼維護來說可是非常有用的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国外视频精品毛片| 亚洲精品videossex少妇| 亚洲国产精品一区二区三区| 欧美一性一乱一交一视频| 国产精品久久久久久中文字| 国产精品精品久久久久久| 日本视频久久久| 国产精品一区二区女厕厕| 日韩av免费看网站| 欧美一区二区影院| 亚洲欧洲中文天堂| 色哟哟亚洲精品一区二区| 欧美性xxxx| 日韩av在线免费看| 国产精品免费久久久| 精品国产乱码久久久久酒店| 亚洲欧美成人一区二区在线电影| 精品国产乱码久久久久久婷婷| 久久久久久久国产精品| 欧美日韩在线看| 日韩av一区在线观看| 欧美在线观看网址综合| 亚洲老司机av| 国产精品久久中文| 亚洲嫩模很污视频| 97人洗澡人人免费公开视频碰碰碰| 日韩欧美高清在线视频| 亚洲色图综合久久| 国产精品aaa| 永久免费精品影视网站| 国产mv免费观看入口亚洲| 国产美女91呻吟求| 欧美日韩人人澡狠狠躁视频| 国产日韩欧美中文在线播放| 久久精品视频一| 91色视频在线观看| 日韩精品在线免费观看| 国产精品成人在线| 在线激情影院一区| 中文字幕亚洲一区| 国产在线日韩在线| 欧美男插女视频| 国产精品av网站| 777午夜精品福利在线观看| 91久久久久久久久久| 国产精品久久77777| 日韩免费av在线| 日韩人体视频一二区| 国色天香2019中文字幕在线观看| 国产成人aa精品一区在线播放| 精品无人国产偷自产在线| 亚洲色图av在线| 51色欧美片视频在线观看| 91九色单男在线观看| 成人性生交xxxxx网站| 九九九久久国产免费| 亚洲一区二区三区成人在线视频精品| 国产成人精品日本亚洲专区61| 成人av色在线观看| 久久久成人的性感天堂| 久热在线中文字幕色999舞| x99av成人免费| 国产精品一久久香蕉国产线看观看| 亚洲国产日韩一区| 久久综合五月天| 色视频www在线播放国产成人| 日本一区二区在线播放| 久久久噜噜噜久久| 美女视频久久黄| 国产午夜精品一区二区三区| 国内免费精品永久在线视频| 国产精品中文字幕在线观看| 97av视频在线| www日韩中文字幕在线看| 亚洲aⅴ日韩av电影在线观看| 国产精品久久久久久久美男| 亚洲第一av网站| 国产日产欧美精品| 亚洲国产精品热久久| 欧美激情精品久久久久久蜜臀| 色综合伊人色综合网站| 亚洲第一免费网站| 免费97视频在线精品国自产拍| 欧美精品999| 亚洲人成在线观看网站高清| 另类美女黄大片| 51视频国产精品一区二区| 成人自拍性视频| 日韩欧美亚洲范冰冰与中字| 日韩精品视频免费专区在线播放| 日韩一区二区三区国产| 国产女同一区二区| 在线观看日韩视频| 国产性猛交xxxx免费看久久| 奇米成人av国产一区二区三区| 久热99视频在线观看| 国产精品久久婷婷六月丁香| 国产精品99久久久久久白浆小说| 国产美女精彩久久| 国产精品视频久久久久| 在线色欧美三级视频| 国产精品劲爆视频| 久久久久久免费精品| 国产精品观看在线亚洲人成网| 成人激情电影一区二区| 亚洲精品视频网上网址在线观看| 中文字幕亚洲一区在线观看| 国产在线播放不卡| 亚洲japanese制服美女| 国产主播精品在线| 高清日韩电视剧大全免费播放在线观看| 欧美高清激情视频| 欧美乱大交做爰xxxⅹ性3| 亚洲三级免费看| 亚洲自拍偷拍在线| 91九色视频在线| 欧美综合在线第二页| 日韩美女视频中文字幕| 欧美精品在线观看91| 国产网站欧美日韩免费精品在线观看| 欧美视频在线观看免费| 久久精品人人做人人爽| 97成人精品视频在线观看| 日韩麻豆第一页| 亚洲丁香久久久| 亚洲人成亚洲人成在线观看| 午夜欧美大片免费观看| 富二代精品短视频| 亚洲无限av看| 日韩精品www| 国产精品久久久久aaaa九色| 亚洲精品国精品久久99热| 精品一区二区三区四区在线| 久久久久久成人| 国产亚洲人成网站在线观看| 日韩av在线网页| 综合网中文字幕| 美女视频久久黄| 91精品国产综合久久久久久蜜臀| 日韩精品视频在线| 亚洲精品v天堂中文字幕| 国产成人精品久久二区二区91| 尤物九九久久国产精品的分类| 亚洲热线99精品视频| 久久久久久com| 国产精品白嫩初高中害羞小美女| 91在线免费视频| 555www成人网| 8090成年在线看片午夜| 欧美电影免费观看高清| 一本一本久久a久久精品牛牛影视| 国产精品爱啪在线线免费观看| 日韩一区二区久久久| 国产精品吴梦梦| 69av在线播放| 欧美中文在线观看国产| 日本精品视频在线观看| 高清一区二区三区四区五区| 色综合老司机第九色激情| 亚洲va国产va天堂va久久| 国产精品羞羞答答| 国内精品模特av私拍在线观看| 欧美伊久线香蕉线新在线| 亚洲免费成人av电影|