<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創未來!
    隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
    數據加載中……

    多態的兩種實現方法

    多態體現在父類和派生類之間,通過函數覆蓋,實現在運行過程中動態調用函數。
    必要條件:
    (1)父類中將該函數聲明為virtual
    (2)子類中完全一致的覆蓋父類中的函數,要求返回值、函數名、參數都一致
    (3)通過指針或者借助于函數來實現
    方法一(利用指針):
    #include <iostream.h>
    class A
    {
    public:
     virtual void func()
     {
      cout<<"A::func()"<<endl;
     }
    }

    class B: public A
    {
    public:
     void func()
     {
      cout<<"B::func()"<<endl;
     }
    }

    void main()
    {
     A tmp=new B();//A tmp=new B;也行
     tmp->func();

     B tmp2;
     ((A *)&tmp2)->func();
    }

    方法二(利用函數):
    #include <iostream.h>
    class A
    {
    public:
     virtual void func()
     {
      cout<<"A::func()"<<endl;
     }
     void test()
     {
      func();//***//
     }
    }

    class B: public A
    {
    public:
     void func()
     {
      cout<<"B::func()"<<endl;
     }
    }

    void main()
    {
     B tmp;
     tmp.test();
    }
    對于//***//行,有很多說道,“func();”等價于“this.func()”,能否實現多態,關鍵是看這里的this指向父類還是子類,由于this指針必須得指向某個對象,當我們用“B tmp”或者“A tmp=new B”構造完對象tmp后,由于tmp本質上都是一個B的對象,因此該this指針就是指向子類的。

    posted on 2008-02-23 19:28 so true 閱讀(1067) 評論(0)  編輯  收藏 所屬分類: C&C++

    主站蜘蛛池模板: 亚洲免费观看网站| 精品亚洲视频在线| 丰满人妻一区二区三区免费视频| 国产一区二区三区无码免费| 日韩亚洲产在线观看| 在线a级毛片免费视频| 亚洲乱人伦精品图片| 久视频精品免费观看99| 亚洲成av人片不卡无码| 免费大片黄在线观看yw| 亚洲AV日韩综合一区尤物| 成人免费777777| 在线观看亚洲免费| 超清首页国产亚洲丝袜| 四虎影视久久久免费| 亚洲午夜久久久久久久久电影网| 香蕉免费在线视频| 亚洲宅男永久在线| 国产电影午夜成年免费视频| 亚洲日本成本人观看| 亚洲Aⅴ无码一区二区二三区软件| 一级日本高清视频免费观看| 亚洲精品午夜国产VA久久成人| 天堂亚洲免费视频| 久久久久亚洲AV综合波多野结衣 | 亚洲欧美日韩久久精品| 一本久久综合亚洲鲁鲁五月天| 本道天堂成在人线av无码免费| 亚洲成av人片天堂网| AA免费观看的1000部电影| 国产精品自拍亚洲| 亚洲国产精品无码AAA片| 香蕉97超级碰碰碰免费公| 理论亚洲区美一区二区三区 | 国产成人无码a区在线观看视频免费| 日韩毛片免费一二三| 大学生一级毛片免费看| 日本一区二区三区在线视频观看免费| 欧洲亚洲国产清在高| 在线免费一区二区| baoyu777永久免费视频|