青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線忘掉

const成員函數

第五節 const成員函數??

一些成員函數改變對象,一些成員函數不改變對象。

例如:
int Point::GetY()
{
  return yVal;
}
   這個函數被調用時,不改變Point對象,而下面的函數改變Point對象:
void Point:: SetPt (int x, int y)
{
  xVal=x;
  yVal=y;
}
   為了使成員函數的意義更加清楚,我們可在不改變對象的成員函數的函數原型中加上const說明:

例題 例10-15
?

class Point
{
  public:
   int GetX() const;
   int GetY() const;

  void SetPt (int, int);
   void OffsetPt (int, int);
  private:
   int xVal, yVal;
};

   const成員函數應該在函數原型說明和函數定義中都增加const限定:
例題例10-16
?

int Point::GetY() const
{
  return yVal;
}

class Set {
public:
  Set (void){ card = 0; }
  bool Member(const int) const;
  void AddElem(const int);
  //...
};

bool Set::Member (const int elem) const
{
  //...
}

  

非常量成員函數不能被常量成員對象調用,因為它可能企圖修改常量的數據成員:
   const Set s;
   s.AddElem(10); // 非法: AddElem不是常量成員函數
   s.Member(10); // 正確
   但構造函數和析構函數對這個規則例外,它們從不定義為常量成員,但可被常量對象調用(被自動調用)。它們也能給常量的數據成員賦值,除非數據成員本身是常量。

  

?

為什么需要const成員函數?
   我們定義的類的成員函數中,常常有一些成員函數不改變類的數據成員,也就是說,這些函數是"只讀"函數,而有一些函數要修改類數據成員的值。如果把不改變 數據成員的函數都加上const關鍵字進行標識,顯然,可提高程序的可讀性。其實,它還能提高程序的可靠性,已定義成const的成員函數,一旦企圖修改 數據成員的值,則編譯器按錯誤處理。

const成員函數和const對象
   實際上,const成員函數還有另外一項作用,即常量對象相關。對于內置的數據類型,我們可以定義它們的常量,用戶自定義的類也一樣,可以定義它們的常量對象。例如,定義一個整型常量的方法為:
   const int i=1 ;
同樣,也可以定義常量對象,假定有一個類classA,定義該類的常量對象的方法為:
   const classA a(2);
   這里,a是類classA的一個const對象,"2"傳給它的構造函數參數。const對象的數據成員在對象壽命期內不能改變。但是,如何保證該類的數據成員不被改變呢?
   為了確保const對象的數據成員不會被改變,在C++中,const對象只能調用const成員函數。如果一個成員函數實際上沒有對數據成員作任何形式的修改,但是它沒有被const關鍵字限定的,也不能被常量對象調用。下面通過一個例子來說明這個問題:

例題例10-17
?

class C
{
  int X;
public:
  int GetX()
  {
   return X;
  }
  void SetX(int X)
  {
   this->X = X;
  }
};
void main()
{
  const C constC;
  cout<<constC.GetX();
}

  

如果我們編譯上面的程序代碼,編譯器會出現錯誤提示:constC是個常量對象,它只能調用const成員函數。雖然GetX( )函數實際上并沒有改變數據成員X,由于沒有const關鍵字限定,所以仍舊不能被constC對象調用。如果我們將上述加粗的代碼:
   int GetX()
改寫成:
   int GetX()const
再重新編譯,就沒有問題了。

   const成員函數的使用
   const成員函數表示該成員函數只能讀類數據成員,而不能修改類成員數據。定義const成員函數時,把const關鍵字放在函數的參數表和函數體之 間。有人可能會問:為什么不將const放在函數聲明前呢?因為這樣做意味著函數的返回值是常量,意義完全不同。下面是定義const成員函數的一個實 例:
   class X
   {
    int i;
    public:
    int f() const;
   };
   關鍵字const必須用同樣的方式重復出現在函數實現里,否則編譯器會把它看成一個不同的函數:
   int X::f() const
   {
    return i;
   }
   如果f( )試圖用任何方式改變i或調用另一個非const成員函數,編譯器將給出錯誤信息。任何不修改成員數據的函數都應該聲明為const函數,這樣有助于提高程序的可讀性和可靠性。

posted on 2007-10-29 02:49 旅途 閱讀(640) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国亚洲| 欧美高清成人| 亚洲男人的天堂在线aⅴ视频| 欧美视频在线观看一区| 亚洲尤物精选| 午夜精品福利一区二区三区av| 国产精品日韩精品欧美精品| 久久成人国产精品| 欧美一区二区成人| 伊人婷婷久久| 亚洲国产一区二区精品专区| 欧美va亚洲va国产综合| 一区二区三区日韩精品视频| 亚洲少妇最新在线视频| 国产综合久久久久久鬼色| 玖玖在线精品| 欧美日韩国产成人精品| 午夜日韩在线观看| 久久亚洲精品一区二区| 亚洲精品一区二区三区99| 一区二区精品国产| 黄网站色欧美视频| 999亚洲国产精| 国产揄拍国内精品对白| 亚洲国产精品久久91精品| 国产精品久久久久av| 久久久久一区二区| 国产综合久久久久久鬼色| 国产亚洲综合在线| 欧美丰满高潮xxxx喷水动漫| 欧美日韩国产精品一区二区亚洲| 亚洲自拍偷拍色片视频| 久久精品国产一区二区三区免费看 | 一区在线观看视频| 亚洲人永久免费| 国产性做久久久久久| 亚洲高清不卡在线观看| 国产精品一区二区黑丝| 亚洲国产一区二区视频| 国产日产精品一区二区三区四区的观看方式 | 宅男噜噜噜66一区二区| 亚洲第一黄网| 欧美一区二区啪啪| 亚洲一级在线观看| 欧美激情亚洲精品| 久久综合色播五月| 国产精品一区亚洲| 一本色道婷婷久久欧美| 在线观看亚洲视频啊啊啊啊| 亚洲欧美日韩国产中文| 一本色道久久综合| 免播放器亚洲一区| 久久亚洲综合网| 国产日韩欧美91| 亚洲视频在线观看三级| 一本一本a久久| 免费在线亚洲欧美| 欧美不卡一区| 伊人久久亚洲影院| 久久精品国产在热久久 | 在线不卡a资源高清| 午夜久久美女| 欧美一级网站| 国产精品美女久久| 亚洲一区二区日本| 午夜精品久久久久久久99黑人| 欧美日韩不卡在线| 亚洲精品一二区| 夜夜嗨av一区二区三区网站四季av| 美女图片一区二区| 欧美激情视频一区二区三区不卡| 亚洲福利视频一区二区| 裸体女人亚洲精品一区| 欧美福利视频一区| 日韩午夜电影在线观看| 欧美破处大片在线视频| 亚洲精品一区在线观看| 亚洲午夜三级在线| 国产精品成人一区二区三区吃奶| 亚洲色图在线视频| 久久国产主播精品| 狠狠v欧美v日韩v亚洲ⅴ| 狼狼综合久久久久综合网| 亚洲成人在线免费| 欧美国产91| 99精品欧美一区二区三区| 欧美日韩成人在线播放| 亚洲天堂av在线免费| 欧美资源在线观看| 亚洲电影在线看| 欧美日本国产精品| 亚洲男女自偷自拍图片另类| 久久看片网站| 亚洲精品一区在线观看| 欧美午夜无遮挡| 欧美影院在线| 亚洲国产精品www| 亚洲一二三区视频在线观看| 国产精品私房写真福利视频| 久久国产精品99久久久久久老狼| 亚洲二区在线观看| 午夜免费电影一区在线观看| 好看的日韩av电影| 欧美日韩日本国产亚洲在线| 亚洲欧美综合| 亚洲国产一区二区精品专区| 欧美一级片在线播放| 亚洲激情精品| 国产欧美日韩免费看aⅴ视频| 巨乳诱惑日韩免费av| 亚洲一品av免费观看| 欧美高清影院| 久久精品九九| 一区二区黄色| 一区二区三区无毛| 国产精品久久久久毛片软件| 美国成人直播| 久久国产精品久久久| 中文高清一区| 亚洲人人精品| 免费成人毛片| 久久精品国产免费看久久精品| 9国产精品视频| 亚洲丰满少妇videoshd| 国产美女精品一区二区三区| 欧美精品久久一区| 欧美成人日韩| 久热爱精品视频线路一| 欧美一区国产一区| 亚洲视屏在线播放| 亚洲免费大片| 亚洲精品日韩一| 亚洲第一综合天堂另类专| 久久综合电影一区| 久久久久久夜精品精品免费| 亚洲欧美精品| 亚洲一区二区三区视频播放| 亚洲精品美女久久7777777| 尤物99国产成人精品视频| 国产情人节一区| 国产乱码精品一区二区三区忘忧草| 欧美日本在线视频| 欧美国产欧美综合| 欧美成人精品1314www| 久热这里只精品99re8久| 久久精品99| 久久久久久国产精品一区| 久久精品国产99国产精品澳门| 羞羞答答国产精品www一本| 亚洲免费综合| 久久国产欧美| 久久天天狠狠| 欧美国产先锋| 欧美日韩一区二区视频在线观看| 欧美日韩国产色站一区二区三区| 欧美精品一区在线发布| 欧美精品尤物在线| 欧美午夜久久| 国产日本欧美视频| 韩国av一区二区三区| 亚洲国产日日夜夜| 一区二区三区产品免费精品久久75 | 欧美日韩精品三区| 欧美三级欧美一级| 国产麻豆一精品一av一免费| 国产自产女人91一区在线观看| 在线观看91久久久久久| 亚洲日本电影| 亚洲欧美欧美一区二区三区| 欧美一区视频在线| 欧美福利视频一区| 99视频一区| 久久国产免费看| 欧美日韩国产三区| 国产精品日韩一区二区三区| 黄色精品一区| 亚洲无线观看| 老色鬼久久亚洲一区二区 | 久久久久久久久岛国免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲国产高清高潮精品美女| aaa亚洲精品一二三区| 久久精品国亚洲| 国产精品99一区二区| 国内揄拍国内精品少妇国语| 亚洲美女视频网| 久久av一区二区三区| 欧美高清视频一区| 午夜国产精品影院在线观看| 巨胸喷奶水www久久久免费动漫| 欧美香蕉视频| 亚洲片国产一区一级在线观看| 香蕉乱码成人久久天堂爱免费| 欧美成人视屏| 欧美一区成人| 国产精品美女www爽爽爽视频| 亚洲人成亚洲人成在线观看图片| 久久精品电影| 亚洲网址在线| 欧美久久在线|