2010/10/25

2010/10/25

關鍵字:聲明、定義、const、引用

 

頭文件用於聲明而非定義。

頭文件包含在多個源文件中,所以不應該含有變量或函數的定義。

變量、函數定義只可以出現一次,聲明可以出現多次。

extern int val = 10;    //雖然有extern但是有初始化式,所以這是一個定義。

double d;               //雖然沒有初始化式,但是沒有extern,所以也是定義。

 

const對象默認爲文件的局部變量。在函數內聲明,則爲函數的局部變量,在全局作用域中聲明則爲文件的局部變量。

在全局作用域中定義非const變量時,它在整個作用域中都可以訪問。

通過指定const變量爲extern,也可以在整個程序中訪問const對象:

file_1.cc

extern const int bufSize = fcn();

file_2.cc

extern const int bufSize;

注意:const對象若想在整個作用域都可以訪問,則必須在聲明時用extern標識,而非const對象則不需要。

 

不能定義引用類型的引用,可以定義其他類型的引用。

const引用必須用與引用同類型的對象初始化,而const引用可以綁定到不同但相關的類型的對象或綁定到右值。

int val = 1024;

int &r1 = val;              //ok

int &r2 = 1024;             //error

int &r3;                    //error

const int &r4 = 42;         //ok

const int &r5 = val + r4;   //ok

 

double dval = 3.14;

const int &r6 = dval;

//編譯器實際是這樣編譯的:

int temp = 42;

const int &4 = temp;

double dval = 3.14;

int temp = dval;

const int &r6 = temp;

 

當引用初始化後,只要該引用存在,它就保持綁定到初始化時指向的對象。不可能將引用綁定到另一個對象。const引用是指向const對象的引用。

int i = 1024, &ref = i;     //i爲整型,ref爲引用。

const val = 1024;

const int &ref = val;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章