久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

賦值兼容規(guī)則

 XX_YY_ZZ 2015-11-08

   賦值兼容規(guī)則是指在需要基類對象的任何地方都可以使用公有派生類的對象來替代,。通過公有繼承,,派生類得到了基類中除構(gòu)造函數(shù)、析構(gòu)函數(shù)之外的所有成員,,而且所有成員的訪問控制屬性也和基類完全相同,。這樣,公有派生類實際就具備了基類的所有功能,,凡是基類能解決的問題,,公有派生類都可以解決。賦值兼容規(guī)則中所指的替代包括以下的情況:
  ·派生類的對象可以賦值給基類對象,。

  ·派生類的對象可以初始化基類的引用,。
  ·派生類對象的地址可以賦給指向基類的指針。
  在替代之后,,派生類對象就可以作為基類的對象使用,,但只能使用從基類繼承的成員。
  如果B類為基類,,DB類的公有派生類,D類中包含了基類B中除構(gòu)造,、析構(gòu)函數(shù)之外的所有成員,這時,,根據(jù)賦值兼容規(guī)則,, 在基類B的對象可以使用的任何地方,都可以用派生類的對象來替代,。在如下程序中,, b1B類的對象,d1D的對象,。
    clasS B
    {…}
    class Dpublic B
    {…}
    B b1,,*pbl
    D d1,;
  這時:
  派生類對象可以賦值給基類對象,,即用派生類對象中從基類繼承來的成員,逐個賦值給基類對象的成員:
    b1=d1,;
  派生類的對象也可以初始化基類對象的引用:
    B &bb=d1,;
  派生類對象的地址也可以賦給指向基類的指針:
    pb1=&d1;
  由于賦值兼容規(guī)則的引入,對于基類及其公有派生類的對象,,我們可以使用相同的函數(shù)統(tǒng)一進行處理(因為當(dāng)函數(shù)的形參為基類的對象時,, 實參可以是派生類的對象) 而沒有必要為每一個類設(shè)計單獨的模塊,,從而大大提高了程序的效率,。 這正是C++的又一重要特色,,即多態(tài)性,可以說,,賦值兼容規(guī)則是多態(tài)性的重要基礎(chǔ)之一,。
:賦值兼容規(guī)則實例。
  本例中,,基類B0以公有方式派生出B1類,,B1類再作為基類以公有方式派生出D1類,基類B0中定義了成員函數(shù)display(),, 在派生類中對這個成員函數(shù)進行了覆蓋,。程序代碼如下:
    //** chap13_2.cpp
    #includeh>
    class B0 //基類B0聲明
    {
     publiC
      v0id display(){c0ut<<"B0::display()"<}
         //公有成員函數(shù)
    },;
    class B1publicB0 //公有派生類B1聲明
    {
     public
      v0id display(){c0ut<<"Bi::display()"<,;}
         //公有成員函數(shù)
    }
    class D1public B1 //公有派生類B1聲明
    {
     public
      v0id display(){c0ut<<”D1::display()”<,;}
          //公有成員函數(shù)
    },;
    v0id fun(B0 *ptr) //普通函數(shù)
    { //參數(shù)為指向基類對象的指針
     ptr->display() //”對象指針—>成員名
    }
    v0id main() //主函數(shù)
    {
     B0 b0,; //聲明B0類對象
     B1 bl,; //聲明B1類對象

     D1 dl //聲明D1類對象
     B0 *p,; //聲明B0類指針
     p=&b0,; //B0類指針指向B0類對象
     fun(p)
     p=&b1,; //B0類指針指向B1類對象
     fun(p),;
     p=&d1 //B0類指針指向D土類對象
     fun(p),;
    }
  這樣,,通過對象名.成員名或者對象指針->成員名的方式,就可以訪問到各派生類中新添加的同名成員,。雖然根據(jù)賦值兼容原則,,可以將派生類對象的地址賦值給基類B0的指針,但是通過這個基類類型的指針,,卻只能訪問到從基類繼承的成員,。
  在程序中,定義了一個形參為基類B0類型指針的普通函數(shù)fun,, 根據(jù)賦值兼容規(guī)則,可以將公有派生類對象的地址賦值給基類類型的指針,,這樣,,使用fun函數(shù)就可以統(tǒng)一對這個類族中的對象進行操作,。 程序運行過程中,分別把基類對象,、 派生類B1的對象和派生類D1的對象賦值給基類類型指針p,,但是,通過指針p,,只能使用繼承下來的基類成員,。也就是說,盡管指針指向派生類D1的對象,,fun函數(shù)運行時通過這個指針只能訪問到D1類從基類B0繼承過來的成員函數(shù)display,,而不是D1類自己的同名成員函數(shù)。因此,,主函數(shù)中三次調(diào)用函數(shù)fun的結(jié)果是同樣的——訪問了基類的公有成員函數(shù),。程序的運行結(jié)果為:

    B0::display
    B0::display
    B0::display

  通過這個例子,我們看到,,根據(jù)賦值兼容規(guī)則,,我們可以在基類出現(xiàn)的場合使用派生類進行替代,但是替代之后派生類僅僅發(fā)揮出基類的作用,。多態(tài)的設(shè)計方法可以保證在賦值兼容的前提下,,基類、派生類分別以不同的方式來響應(yīng)相同的消息,。

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多