C++ const的用法

來源:互聯網
上載者:User

一 、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引用;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.