close

設一個指標指著root,便可在以下的繼承階層中遊走,並可以以指標方式呼叫功能。

注意:type name要設成virtual


#include <iostream>

using namespace std;


class root
{
public :
    virtual void print(){}
};

class C1 :public root
{
public:
    virtual void print()
    {
        cout << "value is 1" << endl;
    }
};

class C2 :public root
{
public:
    virtual void print()
    {
        cout << "value is 2" << endl;
    }
};

class C3 :public C1
{
public:
    virtual void print()
    {
        cout << "value is 3" << endl;
    }
};

class C4 :public C1
{
public:
    virtual void print()
    {
        cout << "value is 4" << endl;
    }
};

class C5 :public C2
{
public:
    virtual void print()
    {
        cout << "value is 5" << endl;
    }
};

class C6 :public C2
{
public:
    virtual void print()
    {
        cout << "value is 6" << endl;
    }
};

int main()
{
    root *ptr;
    C1 obj01;C2 obj02;C3 obj03;
    C4 obj04;C5 obj05;C6 obj06;

    ptr = &obj01;    ptr->print();
    ptr = &obj02;    ptr->print();
    ptr = &obj03;    ptr->print();
    ptr = &obj04;    ptr->print();
    ptr = &obj05;    ptr->print();
    ptr = &obj06;    ptr->print();
    return 0;
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Kuihao 的頭像
    Kuihao

    溫暖午後的金針田__孕育有趣的創新

    Kuihao 發表在 痞客邦 留言(0) 人氣()