C++中auto關(guān)鍵字的使用
前提引入
1.類(lèi)型名,在絕大多數(shù)編程時(shí),我們都會(huì)引入類(lèi)型來(lái)定義一個(gè)我們需要的數(shù)據(jù)。
類(lèi)型眾多,偶爾我們會(huì)遇見(jiàn)一串類(lèi)型名,使用起來(lái)無(wú)比復(fù)雜。存在拼寫(xiě)錯(cuò)誤,含義不明確導(dǎo)致出錯(cuò)的問(wèn)題。
列如:
std::map<std::string, std::string> m{ { "apple", "蘋(píng)果" }, { "orange", "橙子" }, {"pear","梨"} }; std::map<std::string, std::string>::iterator it = m.begin();
在這串代碼中,std::map<std::string, std::string>::iterator 是一個(gè)類(lèi)型,但是該類(lèi)型太長(zhǎng)了,特別容易寫(xiě)錯(cuò)。如何簡(jiǎn)化呢。
在C中,typedef 作為一個(gè)可以取別名的一個(gè)關(guān)鍵字。確實(shí)可以省事許多,卻任然存在缺陷。
typedef std::map<std::string, std::string> Map;
若 typedef 為指針取了別名。存在小問(wèn)題。
typedef char* pstring; int main() { const pstring p1; // 編譯成功還是失??? const pstring* p2; // 編譯成功還是失??? return 0; }
C++是怎么做的呢,設(shè)計(jì)師為了不想寫(xiě)復(fù)雜的類(lèi)型,引入了auto關(guān)鍵字。
auto :
1.在早期C/C++中auto的含義是:使用auto修飾的變量,是具有自動(dòng)存儲(chǔ)器的局部變量
2.C++11中,標(biāo)準(zhǔn)委員會(huì)賦予了auto全新的含義即:auto不再是一個(gè)存儲(chǔ)類(lèi)型指示符,而是作為一個(gè)新的類(lèi)型指示符來(lái)指示編譯器,auto聲明的變量必須由編譯器在編譯時(shí)期推導(dǎo)而得
注:既然auto作為推導(dǎo)而得,在使用auto時(shí),必須初始化。
auto 的使用場(chǎng)景
1. auto 在推導(dǎo)指針是,不必再加*號(hào);
2.auto在使用引用時(shí),必須遵循規(guī)則加上&號(hào);
3.不能作為函數(shù)的參數(shù)使用
4.不能直接用來(lái)聲明數(shù)組。
5.一行多個(gè)數(shù)據(jù)推導(dǎo)必須同類(lèi)型。
int main() { //1 int x = 10; auto a = &x; auto* b = &x; auto& c = x; cout << typeid(a).name() << endl; cout << typeid(b).name() << endl; cout << typeid(c).name() << endl; *a = 20; *b = 30; c = 40; //5 void TestAuto() { auto a = 1, b = 2; auto c = 3, d = 4.0; //錯(cuò) } return 0; }
到此這篇關(guān)于C++中auto關(guān)鍵字的使用的文章就介紹到這了,更多相關(guān)C++ auto關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)牛頓迭代法解方程詳解
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)牛頓迭代法解方程詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03C++第11版本中的一些強(qiáng)大的新特性小結(jié)
這篇文章主要介紹了C++第11版本中的一些強(qiáng)大的新特性小結(jié),需要的朋友可以參考下2015-12-12Qt編寫(xiě)提示進(jìn)度條的實(shí)現(xiàn)示例
進(jìn)度條在很地方都可以使用到,Qt自帶的進(jìn)度條或者操作系統(tǒng)的進(jìn)度條樣式,不夠炫,本文就介紹一下Qt編寫(xiě)自定義控件的提示進(jìn)度條的實(shí)現(xiàn)示例,感興趣的可以了解一下2021-12-12