#include < iostream > using namespace std; class Base1{ public: virtual int func(){ cout << "base1::func" << endl; } }; class Base2{ public: virtual int func(){ cout << "base2::func" << endl; } }; class Der : public Base1, public Base2 { public: // overrides both Base1, and Base func virtual int func() { cout << "der::func" << endl; } }; /** Using auxillary classes */ class AuxBase1: public Base1{ public: virtual int base1_func() = 0; virtual int func() {return base1_func(); } }; class AuxBase2: public Base2{ public: virtual int base2_func() = 0; virtual int func() {return base2_func(); } }; class Der2 : public AuxBase1, public AuxBase2 { int base1_func() { cout << __func__ << endl; } int base2_func() { cout << __func__ << endl; } }; int main() { Der *pd = new Der(); Base1 *p1 = pd; Base2 *p2 = pd; p1->func(); p2->func(); pd->func(); Der2 *pd2 = new Der2(); p1 = pd2; p2 = pd2; p1->func(); p2->func(); }
Output :
der::func der::func der::func base1_func base2_func
No comments:
Post a Comment