發表日期:2010-11-24
一 const基礎
如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況:
int b = 500;
const int* a = &b; [1]
int const *a = &b; [2]
int* const a = &b; [3]
const int* const a = &b; [4]
如果你能區分出上述四種情況,那麼,恭喜你,你已經邁出了可喜的一步。不知道,也沒關係,我們可以參考《effective c++》item21上的做法,
如果const位於星號的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;
如果const位於星號的右側,const就是修飾指標本身,即指標本身是常量。
因此,[1]和[2]的情況相同,都是指標所指向的內容為常量(const放在變數宣告符的位置無關),這種情況下不允許對內容進行更改操作,如不能*a = 3 ;
[3]為指標本身是常量,而指標所指向的內容不是常量,這種情況下不能對指標本身進行更改操作,如a++是錯誤的;
[4]為指標本身和指向的內容均為常量。
二 作為引數
void display(const double& r);或者void display(const double* r);
說明:1 在引用或者指標引數的時候使用const限制是有意義的,而對於值傳遞的引數使用const則沒有意義
2保證引用的變數的值不被改變
3 const在double前或者後面意思相同,只是不同的人的寫法不同
三 const物件
宣告為const的物件只能訪問類中宣告為const的成員函式,不能呼叫其它成員函式.
四 const成員函式
型別說明符 函式名(參數列)const; void print(int i) const;
說明:1 const是函式型別的乙個組成部分,因此在實現部分也要帶const關鍵字.
2 常成員函式不能更新物件的資料成員,也不能呼叫該類中沒有用const修飾的成員函式.
五 使用const的一些建議
1 要大膽的使用const,這將給你帶來無盡的益處,但前提是你必須搞清楚原委;
2 要避免最一般的賦值操作錯誤,如將const變數賦值,具體可見思考題;
3 在引數中使用const應該使用引用或指標,而不是一般的物件例項,原因同上;
4 const在成員函式中的三種用法(引數、返回值、函式)要很好的使用;
5 不要輕易的將函式的返回值型別定為const;
6除了過載操作符外一般不要將返回值型別定為對某個物件的const引用;
c const使用詳解
關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,現將本人的一些體會總結如下,期望對大家有所幫助 一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a ...
C const使用詳解
1.const常量和巨集常量 const int max 100 define max 100 const常量相對巨集常量有兩個有點 1 有型別安全檢查 2 占用記憶體空間少 2.const變數在記憶體中的位置 我們在c程式的記憶體布局中,已經通過示例進行了說明 include const int ...
C const使用詳解
一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a b 2 int const a b 3 const int const a b 4 如果你能區分出上述四種情況,那麼,恭喜你,你已經...