麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

const類對(duì)象和const成員函數(shù)的用法及編程技巧

2019-11-11 04:48:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一些成員函數(shù)改變對(duì)象的數(shù)據(jù)成員值,一些成員函數(shù)不改變對(duì)象得數(shù)據(jù)成員值。 例如: int Point::GetY() { return yVal; } 這個(gè)函數(shù)被調(diào)用時(shí),不改變Point對(duì)象數(shù)據(jù)成員值,而下面的成員函數(shù)改變Point對(duì)象的數(shù)據(jù)成員值: 例如: void Point:: SetPt (int x, int y) { xVal=x; yVal=y; }

為了使成員函數(shù)的意義更加清楚,我們可在不改變對(duì)象的成員函數(shù)的函數(shù)原型中加上const說(shuō)明,(實(shí)際上,任何任何不修改成員數(shù)據(jù)的函數(shù)都應(yīng)該聲明為const函數(shù),這樣有助于提高程序的可讀性和可靠性。

class Point { public: int GetX() const; int GetY() const; void SetPt (int, int); void OffsetPt (int, int); PRivate: int xVal, yVal; }; const成員函數(shù)應(yīng)該在函數(shù)原型說(shuō)明和函數(shù)定義中都增加const限定: 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 { //… }

  非常量成員函數(shù)不能被常量成員對(duì)象調(diào)用,因?yàn)樗赡芷髨D修改常量的數(shù)據(jù)成員: const Set s; s.AddElem(10); // 非法: AddElem不是常量成員函數(shù) s.Member(10); // 正確

但構(gòu)造函數(shù)和析構(gòu)函數(shù)對(duì)這個(gè)規(guī)則例外,它們從不定義為常量成員,但可被常量對(duì)象調(diào)用(被自動(dòng)調(diào)用)。它們也能給常量的數(shù)據(jù)成員賦值,除非數(shù)據(jù)成員本身是常量。

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

const成員函數(shù)和const對(duì)象 實(shí)際上,const成員函數(shù)還有另外一項(xiàng)作用,即常量對(duì)象相關(guān)。對(duì)于內(nèi)置的數(shù)據(jù)類型,我們可以定義它們的常量,用戶自定義的類也一樣,可以定義它們的常量對(duì)象。例如,定義一個(gè)整型常量的方法為:

const int i=1 ; 同樣,也可以定義常量對(duì)象,假定有一個(gè)類classA,定義該類的常量對(duì)象的方法為: const classA a(2); 這里,a是類classA的一個(gè)const對(duì)象,”2”傳給它的構(gòu)造函數(shù)參數(shù)。const對(duì)象的數(shù)據(jù)成員在對(duì)象壽命期內(nèi)不能改變。但是,如何保證該類的數(shù)據(jù)成員不被改變呢? 為了確保const對(duì)象的數(shù)據(jù)成員不會(huì)被改變,在C++中,const對(duì)象只能調(diào)用const成員函數(shù)。如果一個(gè)成員函數(shù)實(shí)際上沒(méi)有對(duì)數(shù)據(jù)成員作任何形式的修改,但是它沒(méi)有被const關(guān)鍵字限定的,也不能被常量對(duì)象調(diào)用。下面通過(guò)一個(gè)例子來(lái)說(shuō)明這個(gè)問(wèn)題:

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 男女羞羞视频在线观看免费 | 日韩av在线播放一区 | 黄色片网站免费 | 草莓视频在线导航 | 在线看免电影网站 | 日韩视频在线观看免费视频 | 欧美三级欧美成人高清www | 色七七网站 | 九九夜夜 | 双性精h调教灌尿打屁股的文案 | 久久久电影电视剧免费看 | 久久免费视频3 | 久久国产精品久久久久久 | 亚洲一区在线免费视频 | 日本成人午夜视频 | 欧美毛片 | 免费久久精品 | 日日鲁一鲁视频 | 伊人亚洲精品 | 大奶一级片 | 91久久久久久亚洲精品禁果 | 青草久久网 | 日韩午夜片| 久久蜜桃精品一区二区三区综合网 | 黄视频免费观看 | 日韩在线播放一区二区 | 国产成人免费精品 | 亚洲精品在线观看网站 | 国产精品一区二区手机在线观看 | 青青草成人免费视频在线 | 免费毛片电影 | 久久99精品国产自在现线 | 国产成人精品午夜 | 永久av在线免费观看 | 色七七亚洲 | 国产精品久久av | 免费在线观看成人av | 少妇色诱麻豆色哟哟 | 精品久久久久久久久久中文字幕 | 色域tv | 免费黄色欧美视频 |