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

首頁(yè) > 編程 > C++ > 正文

C++ auto類型說(shuō)明符

2020-05-23 14:07:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在C++11中引入了auto類型說(shuō)明符,用它就能讓編譯器替我們?nèi)シ治霰磉_(dá)式所屬的類型。當(dāng)然,auto變量必須有初始值,這樣編譯器才能推斷其類型
 

編程時(shí)常常需要把表達(dá)式的值賦給變量,這就要求在聲明變量的時(shí)候清楚知道表達(dá)式的類型。然而要做到這一點(diǎn)并非那么容易,有時(shí)候甚至根本做不到。為了解決這個(gè)問(wèn)題,C++11標(biāo)準(zhǔn)引入了auto類型說(shuō)明符,用它就能讓編譯器替我們?nèi)シ治霰磉_(dá)式所屬的類型。

與原來(lái)那些只對(duì)應(yīng)一種特定類型的說(shuō)明符不同,auto讓編譯器通過(guò)初值來(lái)推算變量類型。顯然,auto定義的變量必須要有初始值。

使用auto具有以下幾點(diǎn)好處:

可靠性:如果表達(dá)式的類型發(fā)生更改(包括函數(shù)返回值發(fā)生更改的情況),它也能工作。
性能:確保將不會(huì)進(jìn)行轉(zhuǎn)換。
可用性:不必?fù)?dān)心類型名稱拼寫(xiě)困難和拼寫(xiě)有誤。
效率:代碼會(huì)變得更高效。

auto item = val1 + val2; // 由val1和val2相加的結(jié)果推斷出item的類型auto i=0, *p = &i; // i是整數(shù),p是整型指針

使用auto能在一條語(yǔ)句中聲明多個(gè)變量。但是一條聲明語(yǔ)句只能有一個(gè)基本數(shù)據(jù)類型,所以該語(yǔ)句中所有變量的初始基本數(shù)據(jù)類型都必須一致:

auto sz = 0, pi = 3.14; // Error!

編譯器推斷出的auto類型有時(shí)候和初始值的類型并不完全一樣,編譯器會(huì)適當(dāng)?shù)馗淖兘Y(jié)果類型使其更符合初始化規(guī)則,例如:

使用auto會(huì)刪除引用

int count = 10;int& countRef = count;auto myAuto = countRef;countRef = 11;cout << count << " "; // print 11myAuto = 12;cout << count << endl; // print 11

你可能會(huì)認(rèn)為 myAuto 是一個(gè) int 引用,但它不是。它只是一個(gè) int,因?yàn)檩敵鰹?11 11,而不是 11 12;如果 auto 尚未刪除此引用,則會(huì)出現(xiàn)此情況。

const限定符 
先引入一種表述:頂層const表示指針本身是個(gè)常量,底層const表示指針?biāo)傅膶?duì)象是一個(gè)常量。一般auto會(huì)忽略掉頂層const,同時(shí)底層const則會(huì)保留下來(lái),例如:

int i = 0;const int ci = i, &cr = ci;auto b = ci; // b 是一個(gè)整數(shù)(ci的頂層const特性被忽略掉)auto c = cr; // c 是一個(gè)整數(shù)(cr是ci的別名,ci本身是一個(gè)頂層const)auto d = &i; // d 是一個(gè)整型指針(整數(shù)的地址就是指向整數(shù)的指針)auto e = &ci; // e 是一個(gè)指向整數(shù)常量的指針(對(duì)常量對(duì)象取地址是一種底層const)

如果希望推斷出的auto類型是一個(gè)頂層const,需要明確指出:

const auto f = ci; // ci 的推演類型是int,f是const int類型

還可以將引用的類型設(shè)置為auto,此時(shí)原來(lái)的初始化規(guī)則仍然適用:

auto &g = ci; // g是一個(gè)整型常量引用,綁定到ciauto &h = 42; // Error: 不能為非常量引用綁定字面值const auto &j = 42; // OK: 可以為常量引用綁定字面值

切記,符號(hào)*和&只從屬于某個(gè)聲明,而非基本數(shù)據(jù)類型的一部分,因此初始值必須是同一類型:

auto k = ci, &l = i; // k是整數(shù),l是整型引用auto &m = ci, *p = &ci; // m是對(duì)整型常量的引用,p是指向整型常量的指針auto &n = i, *p2 = &ci; // Error: i的類型是int,而&ci的類型是const int

附上更多示例代碼:

下面的聲明等效。在第一個(gè)語(yǔ)句中,將變量j 聲明為類型 int。在第二個(gè)語(yǔ)句中,將變量 k 推導(dǎo)為類型 int,因?yàn)槌跏蓟磉_(dá)式 (0) 是整數(shù)

int j = 0; // Variable j is explicitly type int.auto k = 0; // Variable k is implicitly type int because 0 is an integer.

以下聲明等效,但第二個(gè)聲明比第一個(gè)更簡(jiǎn)單。使用 auto 關(guān)鍵字的最令人信服的一個(gè)原因是簡(jiǎn)單

map<int,list<string>>::iterator i = m.begin(); auto i = m.begin(); 

使用 iter 和 elem 啟動(dòng)循環(huán)時(shí)

#include <deque>using namespace std;int main(){  deque<double> dqDoubleData(10, 0.1);  for (auto iter = dqDoubleData.begin(); iter != dqDoubleData.end(); ++iter)  { /* ... */ }  // prefer range-for loops with the following information in mind  // (this applies to any range-for with auto, not just deque)  for (auto elem : dqDoubleData) // COPIES elements, not much better than the previous examples  { /* ... */ }  for (auto& elem : dqDoubleData) // observes and/or modifies elements IN-PLACE  { /* ... */ }  for (const auto& elem : dqDoubleData) // observes elements IN-PLACE  { /* ... */ }}

下面的代碼片段使用 new 運(yùn)算符和指針聲明來(lái)聲明指針

double x = 12.34;auto *y = new auto(x), **z = new auto(&x);

下一個(gè)代碼片段在每個(gè)聲明語(yǔ)句中聲明多個(gè)符號(hào)。請(qǐng)注意,每個(gè)語(yǔ)句中的所有符號(hào)將解析為同一類型。

auto x = 1, *y = &x, **z = &y; // Resolves to int.auto a(2.01), *b (&a);     // Resolves to double.auto c = 'a', *d(&c);     // Resolves to char.auto m = 1, &n = m;      // Resolves to int.

此代碼片段使用條件運(yùn)算符 (?:) 將變量 x 聲明為值為 200 的整數(shù):

int v1 = 100, v2 = 200;auto x = v1 > v2 ? v1 : v2;

下面的代碼片段將變量 x 初始化為類型 int,將變量 y初始化對(duì)類型 const int 的引用,將變量 fp 初始化為指向返回類型 int 的函數(shù)的指針。

int f(int x) { return x; }int main(){  auto x = f(0);  const auto & y = f(1);  int (*p)(int x);  p = f;  auto fp = p;  //...}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
九九久久久久久久久激情| 日产国产精品精品a∨| 第一福利在线视频| japansex久久高清精品| 开心激情五月网| 国产精品久久久久久亚洲av| 亚洲一区免费网站| 男女爱爱福利视频| 成人97精品毛片免费看| 欧洲一区av| 日韩中文首页| 91九色视频导航| 蜜臀av一级做a爰片久久| 亚洲精品视频在线观看免费| 久久精品国产99精品国产亚洲性色| 亚洲三级在线免费| 亚洲精品成人少妇| 免费成人结看片| 亚瑟国产精品| 精品无码人妻一区二区三区品| 色av中文字幕一区| 亚洲精品国产精品自产a区红杏吧| 国产网站免费在线观看| 精品资源在线看| 精品成人av一区二区在线播放| 久热成人在线视频| 成年人免费在线播放| 亚洲国产精彩中文乱码av在线播放| 成人国产精品免费观看动漫| 久久久无码中文字幕久...| 国产成人亚洲综合青青| 欧美日韩综合网| 欧美日韩亚洲91| 三级网在线观看| 91高潮精品免费porn| 国产精品国产三级在线观看| 黄色污在线观看| 国产成人精品综合久久久久99| 狠狠躁天天躁日日躁欧美| 国产精品久久久久久久美男| а√在线天堂官网| 99视频在线观看一区三区| 91成人精品一区二区| 欧美拍拍视频| 黄色a**址| 国产精品视频福利| 狠狠人妻久久久久久综合蜜桃| 日本高清一区| 亚洲精品888| 日本少妇xxx| 国产午夜精品视频一区二区三区| 91短视频版在线观看www免费| 无码少妇一区二区三区| 992tv国产精品成人影院| 韩国三级午夜理伦三级三| 久久品道一品道久久精品| 免费亚洲婷婷| 欧美日韩中文字幕日韩欧美| 五月香视频在线观看| av片在线观看网站| 国产高清av在线播放| 国产麻豆综合视频在线观看| 色偷偷福利视频| 日韩精品一区二区三区在线观看| 深夜福利av你懂的| 欧美在线性视频| 国产精品视频专区| 久久精品这里都是精品| 久久青草精品视频免费观看| 久久9999免费视频| 国产精品18久久久久网站| 国产成人精品一区二三区| 国产99久久久国产精品| 一本大道av伊人久久综合| 欧洲精品在线播放| 国产成人综合自拍| 别急慢慢来1978如如2| 亚洲一区二区黄色| 99久久免费精品高清特色大片| 在线视频中文字幕一区二区| 亚洲欧美一级| 国产午夜精品一区在线观看| 亚洲天堂日韩av| 日韩视频在线一区二区三区| 99久久99热这里只有精品| 亚洲经典视频| 九九九伊在人线综合| 国产精品视频yy9299一区| 任你操在线观看| 国产艳俗歌舞表演hd| 最近中文字幕免费视频| 天天色综合4| 亚洲国产精品va在线看黑人| 成人av资源| a4yy在线播放免费观看视频| 欧美日韩五区| 性刺激的欧美三级视频| wwwww在线观看免费视频| 国产又黄又大又粗视频| 亚洲愉拍自拍另类高清精品| 亚洲经典三级| xfplay每日更新av资源| 一级做a爰片久久| 国产精品久久久久久久久久白浆| 日韩色淫视频| 国产成人啪精品午夜在线观看| 大地资源二中文在线影视观看| 久久九九热视频| 激情偷乱视频一区二区三区| 老司机精品影院| 人人妻人人澡人人爽欧美一区双| 一本色道久久综合亚洲精品婷婷| 欧美日韩中文字幕综合视频| 亚洲美女动态图120秒| 亚洲综合精品视频| 99精品电影| 国产精品性做久久久久久| 国产亚洲欧美精品久久久www| 国产精彩视频一区二区| 成全在线观看免费完整动漫| 欧洲成人av| 看女生喷水的网站在线观看| 精品日韩久久久| 欧美日韩国产色站一区二区三区| 日本孕妇大胆孕交无码| 国产精品自拍视频一区| 欧洲永久精品大片ww免费漫画| 91久久伊人青青碰碰婷婷| 日韩一区二区三区精品视频第3页| 国产精品十八以下禁看| 日本精品视频| 灌醉mj刚成年的大学平面模特| 牛牛精品在线| 韩国成人动漫在线观看| www.激情网| www.欧美三级电影.com| 成人午夜免费福利| 日韩久久精品网| 欧美国产成人精品一区二区三区| 久久中文字幕在线观看| 色大师av一区二区三区| 91精品推荐| 激情六月天婷婷| 黄色三级网站在线观看| 久久av红桃一区二区禁漫| 欧美另类videosbestsex日本| 国产一级特黄aaa大片| 国产精品成人一区二区三区吃奶| 成人在线视频你懂的| 日韩精品亚洲专区在线观看| 老熟女高潮一区二区三区| 爆操妹子视频在线观看| 亚洲一级电影视频| 日韩理论电影中文字幕| 91美女片黄在线观看91美女| av日韩国产| 日韩video| 精品欧美不卡一区二区在线观看| 国产成人高潮免费观看精品| 91.com在线观看| 老司机av在线免费看| 欧洲一区精品| 亚洲青青久久| 国产熟女一区二区三区五月婷| 亚洲欧美日韩三级| 天堂网2014av| 久久精品国产电影| 欧美精品久久久久久久免费| 天天干天天干天天干天天干天天干| 国产尤物一区二区| 国产福利第一视频在线播放| 欧美在线 | 亚洲| 神马香蕉久久| 国产91精品最新在线播放| 99视频精品免费| 4438x成人网全国最大| 中文字幕一区在线观看| 日本888xxxx| 亚洲精品极品少妇16p| 在线视频中文字幕一区二区| 成人国产精品久久久久久亚洲| 国产精品丝袜一区| 亚洲人成网站77777在线观看| 欧美日韩国产一区二区三区| 日韩精品社区| 精品亚洲综合| 一级黄色片视频| 老司机午夜精品视频在线观看| 精品国产乱码久久久久夜深人妻| 啊啊啊啊啊啊啊视频在线播放| 亚洲一区二区中文在线| 欧美日韩精品一区二区三区在线观看| 91久久精品一区二区别| 国产综合视频在线观看| 成人性生活视频| 91无套直看片红桃| 国产精品一区二区av| 手机在线看片日韩| 欧美日韩高清区| 亚洲欧美日本视频在线观看| 色香蕉在线观看| 在线观看精品一区二区三区| 国产精品一卡二卡| 亚洲精品极品少妇16p| 精久久久久久久久久久| 米奇777在线影院线| 97在线播放免费观看| 亚洲va久久久噜噜噜久久| 在线观看免费高清视频| 国产精品视频一区二区三区综合| 国产精品久久看| 国产伦精品一区二区三区免费视频| 成人性生交大片免费看网站| 日本a级不卡| 国产噜噜噜噜久久久久久久久| 欧美日韩久久一区| 秋霞影院一区二区| 青青草视频播放| av动漫在线看| 日本不卡视频一区二区| 欧美视频免费一区二区三区| 亚洲精品成人网| 亚洲欧洲日韩综合| 91国产美女在线观看| 亚洲精品无码久久久久久| 久久久婷婷一区二区三区不卡| 一区二区三区久久| 亚洲一区二区电影| www国产亚洲精品| 日韩一区二区免费在线观看| 91theporn国产在线观看| 伦理在线一区| 国产麻豆视频一区| 北条麻妃高清一区| 欧美撒尿777hd撒尿| 国产精品区一区二区三在线播放| 亚洲国产va精品久久久不卡综合| 暴力调教一区二区三区| xxxxhd欧美精品| 在线精品免费视| 色综合色综合久久综合频道88| 好吊一区二区三区视频| 狠狠干综合网| 加勒比婷婷色综合久久| 亚洲一卡2卡三卡4卡2021四卡| 青草在线视频在线观看| 欧美精品一区在线播放| h免费在线观看| 中文字幕日本最新乱码视频| 欧美日韩免费| 亚洲视频在线播放免费| 999视频在线免费观看| 天天做夜夜爱爱爱| 欧美男人天堂| 国产传媒一区在线| 国产成人h网站| 麻豆av在线导航| 亚洲国产精品一区二区久久恐怖片| 欧美狂猛xxxxx乱大交3| 4p变态网欧美系列| 888av在线| 深夜成人在线| 欧美人与性动交α欧美精品济南到| 国产成人在线视频网站| 精品蜜桃在线看| 国产精品久久久久久吹潮| 中文字幕一区二区三区精华液| 国产精品免费视频二三区| 亚洲色图欧美| 精品视频成人| 8av国产精品爽爽ⅴa在线观看| 亚洲不卡1区| 国产精品一品| 久久综合色播| 116极品美女视频在线观看| 欧一区二区三区| 亚洲男人影院| 精品91免费| 翔田千里亚洲一二三区| 欧美日韩综合不卡| 欧美黄色免费影院| 欧美xfplay| 亚洲精品免费一二三区| 成 人 免费 黄 色| 九一在线免费观看| 久久精品国产久精国产| 高清av不卡| 69久久夜色精品国产69乱青草| 婷婷久久综合九色综合绿巨人| 500福利第一精品导航| 99久久久无码国产精品6| 日韩在线视频中文字幕| 成人性生交大片免费看中文视频| xxxxx中文字幕| 国产午夜精品一区理论片飘花| 国产精品日日夜夜| 新天天拍日日拍狠狠拍| 成人欧美一区二区三区黑人孕妇| 波多野结衣激情视频| 国产精品理伦片| 久草一本av| 97免费中文视频在线观看| 成人高潮片免费视频| 青青艹视频在线| 日韩免费高清av| 国产又粗又猛又黄视频| 免费h精品视频在线播放| 国模娜娜一区二区三区| 这里只有精品国产| 日韩精品中文字幕一区二区| 亚洲人成无码网站久久99热国产| 男插女视频久久久| 精品小视频在线| 国偷自产av一区二区三区小尤奈| 少妇精品无码一区二区三区| 免费的毛片视频| 51ⅴ精品国产91久久久久久| 69视频免费在线观看| 亚洲欧美一区二区激情| 国产特级淫片免费看| 一区二区欧美日韩| 国产成人精品三级麻豆| 黄色激情在线视频| 中文字幕在线播放不卡一区| 麻豆影视在线观看| 日韩av一二三四| 一区二区三区网址| 国产精品小仙女|