C++中auto關(guān)鍵字的使用
前提引入
1.類型名,在絕大多數(shù)編程時(shí),我們都會(huì)引入類型來(lái)定義一個(gè)我們需要的數(shù)據(jù)。
類型眾多,偶爾我們會(huì)遇見(jiàn)一串類型名,使用起來(lái)無(wú)比復(fù)雜。存在拼寫錯(cuò)誤,含義不明確導(dǎo)致出錯(cuò)的問(wèn)題。
列如:
std::map<std::string, std::string> m{ { "apple", "蘋果" }, { "orange", "橙子" },
{"pear","梨"} };
std::map<std::string, std::string>::iterator it = m.begin();
在這串代碼中,std::map<std::string, std::string>::iterator 是一個(gè)類型,但是該類型太長(zhǎng)了,特別容易寫錯(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ì)師為了不想寫復(fù)雜的類型,引入了auto關(guān)鍵字。
auto :
1.在早期C/C++中auto的含義是:使用auto修飾的變量,是具有自動(dòng)存儲(chǔ)器的局部變量
2.C++11中,標(biāo)準(zhǔn)委員會(huì)賦予了auto全新的含義即:auto不再是一個(gè)存儲(chǔ)類型指示符,而是作為一個(gè)新的類型指示符來(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)必須同類型。
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++中vector容器的常用操作方法實(shí)例總結(jié)
vector容器一般被用作創(chuàng)建動(dòng)態(tài)數(shù)組,動(dòng)態(tài)數(shù)組就像Python中的list結(jié)構(gòu)一樣,可以比普通數(shù)組擁有更豐富操作方法,下面就為大家整理了一些最常用的操作:2016-05-05
COLORREF,COLOR,RGB,CString的轉(zhuǎn)化總結(jié)分析
實(shí)際的軟件開(kāi)發(fā)過(guò)程中,常需要用到非.net平臺(tái)的代碼。這時(shí)候就可能碰到ColorRef(也就是以int類型代表的顏色值或是以DWORD值表示的顏色)。這跟.net平臺(tái)下的顏色的相互轉(zhuǎn)換MS并沒(méi)有直接實(shí)現(xiàn)2013-09-09
C語(yǔ)言用函數(shù)實(shí)現(xiàn)反彈球消磚塊
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言用函數(shù)實(shí)現(xiàn)反彈球消磚塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
C/C++編程判斷String字符串是否包含某個(gè)字符串實(shí)現(xiàn)示例
這篇文章主要為大家介紹了C++編程中判斷String字符串是否包含某個(gè)字符串的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
解決c++?error:crosses?initialization?of?問(wèn)題
最近在寫代碼的時(shí)候,碰到了?crosses?initialization?of?...?的問(wèn)題,只因我在?switch?的某個(gè)?case?分支下定義了一個(gè)變量,于是乎便將這個(gè)問(wèn)題整理一下,需要的朋友可以參考下2023-03-03
深度解析C語(yǔ)言中數(shù)據(jù)的存儲(chǔ)
本文詳細(xì)介紹了C語(yǔ)言中數(shù)據(jù)的存儲(chǔ),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
C語(yǔ)言實(shí)現(xiàn)隨機(jī)抽取紙牌程序
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)隨機(jī)抽取紙牌程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C++ 設(shè)置控制臺(tái)(命令行)窗口 光標(biāo)位置,及前背景顏色
這篇文章主要介紹了C++ 設(shè)置控制臺(tái)(命令行)窗口 光標(biāo)位置,及前背景顏色,需要的朋友可以參考下2019-04-04
C++數(shù)據(jù)結(jié)構(gòu)之鏈表詳解
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建的相關(guān)資料,希望通過(guò)本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2021-08-08

