c++ auto關(guān)鍵字的前世今生

2011年,隨著C++11的發(fā)布,這門(mén)高級(jí)編程語(yǔ)言步入了現(xiàn)代C++的階段,其中auto關(guān)鍵字的使用發(fā)生了重大的變化。對(duì)于C++98/03來(lái)說(shuō),auto關(guān)鍵字是個(gè)可有可無(wú)的雞肋,很少見(jiàn)到有人用它,它被解釋為一個(gè)自動(dòng)存儲(chǔ)變量的關(guān)鍵字。這里如果沒(méi)看懂也沒(méi)關(guān)系,筆者建議你粗魯?shù)赝浰?,現(xiàn)代C++中的用法才是重點(diǎn)。
C++11,auto關(guān)鍵字被定義為自動(dòng)類(lèi)型推導(dǎo)。幾個(gè)意思,什么意圖?先看看下面幾個(gè)例子:
C++11以前,我們需要像下面這樣做才是合法的,才能通過(guò)編譯。
是的,沒(méi)錯(cuò),就是跟你想的一樣,我們不需要像以前那樣用精準(zhǔn)的數(shù)據(jù)類(lèi)型去定義一個(gè)變量,換句話(huà)說(shuō),從某種程度上減輕了C++編程人員的負(fù)擔(dān),取而代之的是編譯器的自動(dòng)推導(dǎo)。同時(shí),在某些場(chǎng)景下縮短代碼的行長(zhǎng)度,使得代碼布局更加美觀。
例如:
此外,由于auto關(guān)鍵字的引入,C++的泛型也變得簡(jiǎn)單起來(lái)。
結(jié)尾:這里粗淺的說(shuō)了下現(xiàn)代C++中auto關(guān)鍵字的語(yǔ)義變化,以及一些簡(jiǎn)單的用法。至于top-level const屬性丟失,volatile屬性丟失,auto值語(yǔ)義以及轉(zhuǎn)發(fā)引用等內(nèi)容,以后有機(jī)會(huì)再做探討。
水平有限,歡迎交流指正。