C++ supplement 類型別名及auto,decltype

在上一章節中,說到了引用,其作用是相當于給一個變量取了一個別名,并對該與其綁定的別名不離不棄~~那么,這次就來說說給定義變量的類型來取個別名。這兒就需要說到關鍵字typedef 和 using。

之前在使用typedef時主要是在定義結構體的時候,相當于給結構體取了一個類型名~當使用typedef給類型取別名時,如下圖所示:


當使用using給類型取別名時,如下圖所示:


只要是原類型能出現的地方,則其對應的類型別名均能出現。說到這兒是不是覺得比較直白明了,那么下面來個進階版吧~~如下圖:


是不是有點暈了,原來取了別名后,對于這種含有指針的綜合結構是不能簡單地用原來的名字進行替換的~而是應該將*與其前面的類型當作整體,也就是指向該類型的指針,其落腳點在于其是指針,所以當用該別名定義其他變量時,首先應將其視為指針,若其前有const,則說明其是常量指針。


好了,下面說說auto,這個我自己用得比較少,稍作了解吧~

auto也就是自動的意思,為什么要自動呢,也就是因為情況不明確,當將一個表達式的值賦值給一個變量時,如果這個表達式的類型人為事先無法確定時,那么就把這個任務交給編譯器取處理吧,那么編譯器如何知道得靠自己來確定呢,auto就是這樣的一個聲明的作用,告訴編譯器此處需要靠它來自動確定變量的類型了,所以,用auto聲明的變量必須對其進行初始化。如下圖所示:





上面的auto是給不確定類型的變量進行初始化,那么如果純粹的只是想知道不確定類型的表達式最后的類型是什么的話,就可以用decltype來解決了,該關鍵字表示讓編譯器分析表達式的類型卻對表達式不作具體的計算。如下圖:






下面說說auto與decltype的區別:


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容