變量名,即變量的標(biāo)識(shí)符,可以由字符,數(shù)字,以及下劃線來(lái)組成。他必須以字符或者下劃線來(lái)開(kāi)頭,并且區(qū)分大小寫(xiě)。
語(yǔ)言本身沒(méi)有對(duì)變量名做什么限制。但是為了用戶著想,他不應(yīng)過(guò)長(zhǎng)。
c++保留了一些詞用作關(guān)鍵字。關(guān)鍵字標(biāo)識(shí)符不能在作為標(biāo)識(shí)符在程序中使用了。
對(duì)于命名對(duì)象有很多已經(jīng)普遍接受的習(xí)慣。主要考慮的因素的是程序的可讀性。
第一:對(duì)象的命名一般用小寫(xiě)。
第二:標(biāo)識(shí)符通常用容易記憶的名字。
第三:對(duì)于多詞構(gòu)成的標(biāo)識(shí)符一般在詞的中間加上下劃線。
對(duì)象的定義:
一個(gè)簡(jiǎn)單的對(duì)象的定義由一個(gè)類(lèi)型指示符后面加上一個(gè)名字構(gòu)成,以分號(hào)結(jié)束。
例如: int aaaaa;
當(dāng)同類(lèi)型的多個(gè)標(biāo)識(shí)符被定義的時(shí)候,我們可以在類(lèi)型指示符后面用逗號(hào)隔開(kāi)。
一個(gè)簡(jiǎn)單的定義指定了變量的類(lèi)型和標(biāo)識(shí)符。他并不提供初始值。
如果一個(gè)變量是在全局域(globe scope)中定義的,那么系統(tǒng)會(huì)保證給他一個(gè)初始值0。如果一個(gè)變量是在一個(gè)局部域中定義的,或者通過(guò)一個(gè)new 動(dòng)態(tài)分配的,那么系統(tǒng)不會(huì)向它提供初始值0。這些對(duì)象被稱為未初始化(uninitialized),未初始化的對(duì)象不是沒(méi)有值,而是對(duì)象的值未被定義。
因?yàn)槭褂梦闯跏蓟膶?duì)象是個(gè)很常見(jiàn)的  錯(cuò)誤,并且很難被發(fā)現(xiàn)。所以建議為每個(gè)定義的對(duì)象進(jìn)行初始化。
類(lèi)機(jī)制通過(guò)缺省構(gòu)造函數(shù)提供了類(lèi)對(duì)象的自動(dòng)初始化。
例如:
int  main()
{
int val;////////未被初始化的值。
string  project;//////通過(guò)string類(lèi)的缺省的構(gòu)造函數(shù)進(jìn)行了初始化。
}


val是一個(gè)未被初始化的局部變量。
但是project是一個(gè)已經(jīng)被初始化的類(lèi)對(duì)象——被string類(lèi)缺省的構(gòu)造函數(shù)自動(dòng)初始化。
初始化一個(gè)值可以在對(duì)象定義的時(shí)候進(jìn)行。
c++支持兩種形式的初始化。
第一種是使用賦值符號(hào)的現(xiàn)實(shí)的操作。
如:
int val=111;
string  project="ssssss";
隱式形式中,初始化值被放在括號(hào)中。
int val(111);
string project("sssssss");
在對(duì)象的定義之中,當(dāng)對(duì)象的標(biāo)識(shí)符在定義中出現(xiàn)后,對(duì)象名馬上就是可見(jiàn)的了。因此用對(duì)象初始化他自己是合法的,只是這樣做不是明智的。
例如:int val=val;///////合法,但是不是明智的。
另外,每種內(nèi)置數(shù)據(jù)類(lèi)型都支持一種特殊的構(gòu)造函數(shù)??蓪?duì)象初始化為0。
/////設(shè)置val為0。設(shè)置dval為0.0。
int val =int();
double dval=double();
下列的定義中:
int()
vector <int>ival(10);
函數(shù)int()自動(dòng)被應(yīng)用到ival包含的10個(gè)元素上。
對(duì)象可以用任意復(fù)雜的表達(dá)式來(lái)初始化,也可以用返回值