(老師的ppt,拿來整理一下,在這裏存個檔。)
const 用來修飾類型, 則爲常類型, const可以放在類型的前面,也可以放在類型的後面。
(對一個具體的變量來說,如果const直接出現在該變量的前面,則該變量的值一旦被初始化就不能再改變。)
常變量在定義的時候必須初始化,而且以後也不能再賦值。
const 用來修飾類的成員函數, 則爲常函數, 該函數中不能修改類的成員變量。常函數不能是static的。
const 用來修飾對象, 則爲常對象, 常對象只能調用該對象的常函數。
當類的非(const)常對象去調用函數時,先找非const版本,找不到再找const版本。
而類的常對象調用函數時,只能找const版本。
類中的成員變量只有時static const的才能在定義的時候初始化,否則只能在構造函數中初始化了。
(我想的是這樣的:
加了const以後, 變量就變成了非左值了。只有一種情況下const的變量可以在左邊,就是const變量定義的時候,const int i = 0;
)
所以const來修飾函數的返回值的時候:const int &func(int i) ; 不能這樣使用 func(42) = 12;因爲左邊是個非左值。
const 用來修飾引用, 則爲常引用, 不能通過該引用,來改變被引用對象的值。
另外當一個引用和一個對象連接起來後,就無法和其他的對象連接了,常引用當然也是如此。
const int &x = y;
你能把x再指向z麼,沒這種語法啊。