函數參數列表後的const關鍵字

該const用來修飾類的成員函數,類的設計者通常把成員函數聲明爲const,以表示它們不修改類對象。
a、const成員函數不可以修改類中的數據成員(mutable修飾的除外),編譯時將進行檢查,若const成員函數修改了類的數據成員,則無法通過編譯;
b、聲明爲const的類對象,只能訪問const成員函數,而非const的類對象可以訪問任意的成員函數,包括const成員函數;
c、對於一個類,假如其中含有指針類型的數據成員,該類的const成員函數雖然不能直接修改該指針,但是可以修改該指針指向的內容,從而間接地改變類對象。所以,即使一個聲明爲const的類對象,在調用const成員函數時,也同樣有可能改變自身的屬性。如下例:
#include <iostream>
using namespace std;
class test
{
  private:
      char *p;
  public:
      void baddesign(string &str) const
       {
         p=str.c_str();//錯誤,不能修改p
         for(int i=0;i<str.size();i++)
          p[i]=str[i];//不好的風格,但不是錯誤的
       }
}


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