小人物學(xué)個(gè)大習(xí)(41-50)
C++ primer
列表初始化:要想定義一個(gè)名為units_sold的int變量并初始化為0,以下的4條語(yǔ)句都可以:
int units_sold = 0;
int units_sold ={0};
int units_sold{0};
int units_sold(0);
這種初始化的形式被稱為列表初始化,如果我們使用列表初始化且初始值存在丟失信息的風(fēng)險(xiǎn),則編譯器將報(bào)錯(cuò)
long double ld=3.1415926;
int a{ld}; //錯(cuò)誤,會(huì)造成信息丟失如果定義變量時(shí)沒有指定初值,則變量被默認(rèn)初始化,此時(shí)變量被賦予了“默認(rèn)值”。默認(rèn)值由變量類型,變量位置決定。
內(nèi)置類型 函數(shù)體之外 0
函數(shù)體之內(nèi) 不被初始化 未定義C++語(yǔ)言支持分離式編譯機(jī)制,為了支持分離式編譯,C++語(yǔ)言將聲明和定義區(qū)分開來。聲明使得名字為程序所知,一個(gè)文件如果想使用別處定義的名字則必須包含對(duì)那個(gè)名字的聲明。而定義負(fù)責(zé)創(chuàng)建與名字關(guān)聯(lián)的實(shí)體。變量聲明規(guī)定了變量的類型和名字,在這一點(diǎn)上定義與之相同。但是除此之外,定義還申請(qǐng)存儲(chǔ)空間,也可能會(huì)為變量賦一個(gè)初值。
如果想聲明一個(gè)變量而非定義它,就在變量名前添加關(guān)鍵字 extern,而且不要顯式地初始化變量:
extern int i;聲明I
int j; 聲明并定義j
任何包含了初始化的聲明即成為定義可以通過前后綴、改變整型,浮點(diǎn)型和字符型字面值的默認(rèn)類型。
字符和字符串
u char16_t
U char32_t
L wchar_t
u8 char utf-8
整型
U OR u unsigned
L or l long
LL or ll longlong
浮點(diǎn)型
f or F float
l or L long double用戶定義的標(biāo)識(shí)符中不能連續(xù)出現(xiàn)兩個(gè)下劃線,也不能以下劃線緊連大寫字母開頭。此外,定義在函數(shù)體外的標(biāo)識(shí)符不能以下劃線開頭。
約定俗成的命名規(guī)范:
標(biāo)識(shí)符要能體現(xiàn)實(shí)際含義
變量名一般用小寫字母 如 index
用戶自定義的類名一般以大寫字母開頭如Sales_item
如果標(biāo)識(shí)符由多個(gè)單詞組成,則單詞間應(yīng)有明顯區(qū)分,如student_loan 或 studentLoan作用域(scope)是程序的一部分,在其中的名字有其特定的含義。C++語(yǔ)言中大多數(shù)作用域都以花括號(hào)分隔。
同一個(gè)名字在不同作用域中可能指向不同的實(shí)體。
名字的有效區(qū)域始于名字的聲明語(yǔ)句,以聲明語(yǔ)句所在的作用域末端為結(jié)束。作用域能彼此包含,被包含的作用域稱為內(nèi)層作用域,包含著別的作用域的作用域稱為外層作用域
int unique =42;
{
int unique =0;
cout<<::unique<<endl;
}
上述代碼最終顯示的是42
int i = 1;
int main()
{
int i =2, sum = 0;
// for(int i=0;i!= 10;++i)
// sum +=i;
{ int i =3;
cout<<::i<<endl;
}
return 0;
}
上述代碼想顯示的是1引用為對(duì)象起了另外一個(gè)名字,引用類型引用另外一種類型,通過聲明符&來定義引用類型
不管學(xué)習(xí)的質(zhì)量如何,總是要堅(jiān)持學(xué)習(xí)。
2023年6月29日