設一個指標指著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;
}