第十三週--純虛函數

問題及代碼:

/*copyright 計算機與控制工程學院
文件名稱:閱讀程序
完成日期:2016/5/24
作者:馬豔豔
*/
#include <iostream>
using namespace std;
class Base
{
public:
    virtual void Who() =0;
};
class FirstDerived:public Base
{
public:
    void Who() { cout<<"F"; }
};
class SecondDerived:public Base
{
public:
    void Who() { cout<<"S"; }
};
int main()
{
    FirstDerived first_obj;
    SecondDerived second_obj;
    Base &bref=first_obj;
    bref.Who();
    bref=second_obj;
    bref.Who();
    Base *bp;
    bp=&first_obj;
    bp->Who();
    bp=&second_obj;
    bp->Who();
    return 0;
}

運行結果:

結果分析:

/*程序中Base、FirstDerived和SecondDerived屬於同一個類族,抽象類Base通過純虛函數
    爲整個類族提供了通用的外部接口定義。Base &bref=first_obj;基類的引用可以作爲派生類
.    對象的別名,符合類型兼容規則。所以bref.Who();輸出“F”,bref=second_obj;bref已經被
    引用賦值,其值不能被更改,故bref.Who();仍然輸出“F”。bp爲指向基類的指針,可以指向
   派生類,所以分別輸出“F”和“S”。
*/


發佈了117 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章