C++11系列学习之四----auto
在哪些情況下要申明類型:
定義變量類型
函數(shù)返回值,函數(shù)參數(shù)
表達(dá)式返回變量類型
auto關(guān)鍵字原理
? ? ?在定義變量的時(shí)候必須申明類型,c++是強(qiáng)語(yǔ)言類型,在編譯階段需要知道類型,這樣的好處是程序效率更高,而動(dòng)態(tài)語(yǔ)言不需要類型申明的需要自推導(dǎo)變量類型。使用了auto是不是c++效率會(huì)變慢?完全不是,因?yàn)樵诰幾g階段編譯器已經(jīng)幫程序員推導(dǎo)好了變量的類型。前提條件是編譯器可以根據(jù)當(dāng)前的程序的狀態(tài)推導(dǎo)出變量類型。只是編譯器更加智能,我猜想編譯時(shí)間豈不更長(zhǎng)了。我這里使用了visual studio 2013/2015,均已經(jīng)支持大部分C++11的特性.
auto關(guān)鍵字使用場(chǎng)景
場(chǎng)景一,申明普通變量
auto num = 10;
場(chǎng)景二,函數(shù)返回值,如果沒(méi)有auto,總是要巧那么長(zhǎng)的返回值,有了auto關(guān)鍵字后,是不是心里感覺(jué)很爽。
vector<string> str_vec; vector<string>::iterator it_old = str_vec.begin(); auto it_new = str_vec.begin();
場(chǎng)景三,申明函數(shù)返回值
c++11:
auto add(int a, int b)->int { return a + b; }
c++14已經(jīng)去掉了煩人的->int,我已經(jīng)在visual studio 2015中實(shí)驗(yàn)。
auto add(int a, int b) {return a + b; }
auto使用需要注意的幾個(gè)問(wèn)題
1、使用auto關(guān)鍵字的變量必須有初始值,編譯器才能推導(dǎo)出變量類型。
2、在傳遞const變量的時(shí)候,使用auto必須自己加const
const int a =10; auto b = a; // b的類型是int const auto c = a; // c 的類型是const int
3、關(guān)于很奇葩的函數(shù)返回值
auto關(guān)鍵字只能在函數(shù)的返回值使用auto關(guān)鍵字,并且在函數(shù)尾還需要標(biāo)注返回類型
這樣看起來(lái)很奇葩,莫不如不用auto關(guān)鍵字,但我認(rèn)為委員會(huì)的人沒(méi)這么閑,上google查了下,有下面兩條原因:
1、他們認(rèn)為把返回值放在函數(shù)后面更好看(特別是返回值很長(zhǎng)的時(shí)候)
2、C++14將會(huì)把討人煩得返回值去掉,編譯器直接支持自推導(dǎo)。
本文轉(zhuǎn)載自:《C++11 之a(chǎn)uto》
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C++11系列学习之四----auto的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【离散数学中的数据结构与算法】四 加法
- 下一篇: Windows Qt安装教程