小人物學(xué)個(gè)大習(xí)(71-80)
C++ primer
C++11標(biāo)準(zhǔn),允許將變量聲明為constexpr類型,以便由編譯器來(lái)驗(yàn)證是否為常量表達(dá)式。聲明為constexpr的變量一定是一個(gè)常量,而且必須用常量表達(dá)式初始化:
constexpr int mf =20 , limit = mf+1;constexpr數(shù)據(jù)類型
1.常用字面值類型
2.指針的初始值為nullptr或0,或者是儲(chǔ)存于一個(gè)固定地址中的對(duì)象
3.允許constexpr綁定到定義在函數(shù)體之外的有固定地址的變量const int?p =nullptr;
constexpr intq = nullptr;
p是一個(gè)指向常量的指針,q是一個(gè)常量指針,constexpr把它所定義的對(duì)象置為了頂層const類型別名,typedef double wages;
新標(biāo)準(zhǔn)規(guī)定了一種新方法,使用別名聲明來(lái)定義類型的別名:
using SI= Sales_item;
SI 是 Sales_item 的同義詞typedef char *pstring;
const pstring cstr = 0; cstr是指向char的常量指針,指針是常量
const char *ps;ps是一個(gè)指針,它的對(duì)象是指向char的常量C++11引入了auto類型說(shuō)明符,auto通過(guò)初始值來(lái)推算變量類型,顯然,auto定義的變量必須有初始值
auto item = val1+val2;1.編譯器以引用對(duì)象的類型作為auto類型。
2.auto一般會(huì)忽略掉頂層const,同時(shí)底層const會(huì)保留下來(lái)
const int ci =i,&cr=ci;
auto b=ci;b是一個(gè)整數(shù)
auto c =&ci;c是一個(gè)指向整數(shù)常量的指針decltype類型說(shuō)明符
C++11還引入了decltype 類型說(shuō)明符,它的作用是選擇并返回操作數(shù)的數(shù)據(jù)類型。
decltype(f()) sum =x; sum的類型就是函數(shù)f的返回類型
decltype(ci) x=0;如果decltype使用的表達(dá)式是一個(gè)變量,則返回該變量的類型,包括頂層和底層constdecltype 返回類型
1.如果decltype使用的表達(dá)式不是一個(gè)變量,則decltype返回表達(dá)式結(jié)果對(duì)應(yīng)的類型
int r =4,*p=&r;
decltype(r+0)b;b是一個(gè)為初始化的int
2.decltype(*p)c;錯(cuò)誤,c是int&,必須初始化
如果表達(dá)式是解引用操作,則decltype將得到引用類型:解引用指針可以得到指針?biāo)傅膶?duì)象,而且還能給這個(gè)對(duì)象賦值,因此decltype(*p)的結(jié)果就是 int&,而非int
3.decltype((variable))的結(jié)果永遠(yuǎn)是引用,而decltype(variable)的結(jié)果只有當(dāng)variable本身是個(gè)引用時(shí)才是引用
多少要學(xué)一點(diǎn)習(xí)。
2023年7月05日