c++ 關於decltype和auto的一點小總結

最近再看C++primer 5th,正好總結一下decltype和auto的用法,方便複習

auto定義的變量必須有初始值

使用auto可以在一條語句聲明多個變量,但一條聲明語句只能有一個基本數據類型

auto i=0,*p=&i;
auto sz=0,pi=3.2;  //錯誤 sz和pi類型不一致

真正參與初始化的其實是引用對象的值,編譯器以引用對象的類型作爲auto的類型

int i=0,&r=i;
auto a=r; //a是int整數
auto一般會忽略頂層const,底層const保留下來
int i=0;
const int ci=i,&cr=ci;
auto b=ci;  //int 忽略頂層
auto c=cr; //int
auto d=&i; //*int
auto e=&ci; //const *int 對 常量取地址是底層
const
設置auto引用時,頂層常量屬性仍然保留

const int ci=9;
auto &m=ci,*p=&ci; //m常量引用,p指向常量的指針

decltype處理頂層const和引用的方式與auto有些不同

引用從來都是作爲所指對象的同義詞出現,只有用在decltype處是個例外

const int ci=0,&cj=ci;
decltype(ci) x=0; //const int
decltype(cj) y=x; //const int &
另一些特殊情況

int i=2,*p=&i,&r=i;
decltype(r+0) b;  //int
decltype(*p) c;  //c是int&,必須初始化

還有一個

decltype((i)) d; //d是int&
加雙括號的是引用類型

就這麼多把

發佈了52 篇原創文章 · 獲贊 15 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章