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

旅途

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

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 旅途 閱讀(633) 評論(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>
            日韩天堂在线观看| 亚洲伦理网站| 久久精品国产精品亚洲综合| 日韩一区二区精品视频| 欧美日韩在线免费| 一区二区三区日韩| 亚洲一区二区三区在线看| 国产精品白丝av嫩草影院 | 欧美日韩成人精品| 99视频一区二区| 一区二区免费在线播放| 国产精品久久久久天堂| 欧美在线影院| 久久亚洲综合色| 亚洲人成网站精品片在线观看| 亚洲精品国产精品国自产观看| 欧美日韩在线高清| 欧美综合二区| 欧美xxx成人| 亚洲欧美国产精品va在线观看| 亚洲免费影院| 亚洲国产mv| 亚洲一区中文| 亚洲大片免费看| 一区二区欧美日韩| 黑丝一区二区三区| 99精品免费视频| 国产午夜精品理论片a级探花| 亚洲电影有码| 国产香蕉久久精品综合网| 欧美ed2k| 国产伦精品一区二区三区高清版| 免费亚洲婷婷| 国产精品高潮呻吟视频| 欧美成人一区在线| 国产精品视频男人的天堂| 免费看亚洲片| 国产欧美一级| 亚洲精品在线免费| 在线日本成人| 午夜视频在线观看一区| 亚洲精品免费网站| 久久久久久尹人网香蕉| 欧美一区2区三区4区公司二百| 老司机一区二区| 久久精品中文字幕免费mv| 欧美日韩福利在线观看| 欧美激情精品久久久六区热门 | 美女国产精品| 久久久精品国产免费观看同学 | 免费影视亚洲| 久久夜色精品亚洲噜噜国产mv| 欧美视频一区在线| 亚洲国产成人高清精品| 1024成人网色www| 久久精品国产77777蜜臀| 午夜欧美不卡精品aaaaa| 欧美日本一区二区三区| 亚洲国产欧美日韩精品| 亚洲电影免费在线| 久久伊人免费视频| 老牛影视一区二区三区| 国内精品免费在线观看| 欧美一级精品大片| 久久国产精品久久w女人spa| 国产精品视频一二| 亚洲小说欧美另类婷婷| 亚洲欧美日韩另类精品一区二区三区| 欧美日韩精品免费观看| 亚洲免费福利视频| 亚洲视屏在线播放| 欧美日韩综合在线| 亚洲午夜精品一区二区三区他趣| 国产精品99久久久久久久久| 欧美日韩亚洲高清| 日韩视频永久免费| 亚洲一区在线免费观看| 国产精品欧美久久| 午夜精品视频在线| 久久久久久午夜| 亚洲福利电影| 欧美国产日本| 在线亚洲+欧美+日本专区| 亚洲综合色丁香婷婷六月图片| 欧美日韩一区自拍| 欧美一区二区成人6969| 老司机午夜免费精品视频| 91久久中文| 欧美视频二区36p| 亚洲欧美日韩爽爽影院| 久久免费精品日本久久中文字幕| 在线视频国产日韩| 欧美激情精品久久久久久久变态| 99www免费人成精品| 欧美在线视频播放| 亚洲国产另类精品专区| 欧美日韩另类视频| 性欧美在线看片a免费观看| 欧美激情亚洲| 欧美一区二区三区免费视| 亚洲国产清纯| 国产精品久久久久久亚洲调教| 久久久精品视频成人| 亚洲日本一区二区| 久久久久久色| 亚洲一区二区精品在线| 永久免费视频成人| 国产精品vvv| 欧美激情女人20p| 欧美一乱一性一交一视频| 亚洲黄色小视频| 久久久久久久综合色一本| 亚洲网站视频福利| 在线电影国产精品| 国产精品色婷婷久久58| 欧美区在线观看| 久久偷窥视频| 久久国产天堂福利天堂| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久精品国产亚洲精品| 亚洲美女少妇无套啪啪呻吟| 蜜桃av噜噜一区| 午夜视频在线观看一区二区三区 | 狠狠色狠狠色综合日日五| 国产精品va在线播放我和闺蜜| 久久亚洲影院| 久久久国产一区二区三区| 亚洲一区在线看| 夜久久久久久| 夜夜夜久久久| 亚洲日本在线视频观看| 亚洲国产精品ⅴa在线观看| 久久免费视频在线观看| 久久99在线观看| 亚洲欧美欧美一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 亚洲成人在线| 在线观看三级视频欧美| 黄色成人在线观看| 激情丁香综合| 在线日韩视频| 亚洲国产婷婷| 亚洲精品一区二区三区婷婷月| 亚洲第一视频| 亚洲激情第一页| 亚洲理论在线观看| 99热免费精品| 亚洲午夜精品久久久久久浪潮| 99视频精品在线| 亚洲一级在线| 欧美一区二区三区啪啪| 午夜日韩电影| 久久久国产一区二区三区| 久久这里有精品15一区二区三区| 久久久久久婷| 欧美激情中文字幕在线| 亚洲国产综合视频在线观看| 亚洲国产精品成人综合色在线婷婷| 亚洲国产精品一区| 日韩午夜免费| 午夜精品美女自拍福到在线| 久久狠狠一本精品综合网| 久热精品视频在线| 欧美国产日韩亚洲一区| 国产精品白丝jk黑袜喷水| 国产精品亚洲网站| 黄色成人av网站| 9色porny自拍视频一区二区| 中文国产一区| 欧美中文在线观看国产| 美女视频一区免费观看| 欧美激情视频一区二区三区免费 | 欧美成年人网站| 91久久久精品| 亚洲尤物在线视频观看| 久久人人超碰| 欧美视频中文字幕在线| 亚洲激情一区二区三区| 91久久精品久久国产性色也91| 亚洲美女91| 欧美在线视频二区| 欧美a级大片| 国产视频一区在线观看| 亚洲欧洲一区二区三区久久| 亚洲一区视频| 亚洲电影免费在线| 欧美在线1区| 欧美日韩精选| 亚洲国产视频a| 久久国产精品久久国产精品| 亚洲激情第一页| 先锋资源久久| 国产精品qvod| 亚洲美女在线观看| 久久久久久久高潮| 亚洲一区在线观看免费观看电影高清 | 欧美在线看片| a91a精品视频在线观看| 免费91麻豆精品国产自产在线观看| 国产精品久久9|