Here is a code snippet,
Here pA->draw() will call drawA defined in D, why? How'd system know which function should be called, drawA or drawB?Code:class A { public: virtual void draw(){cout<<"A"<<endl;} }; class B { public: virtual void draw(){cout<<"B"<<endl;} }; class A1 : public A { public: virtual void drawA() = 0; virtual void draw(){return drawA();} }; class B1 : public B { public: virtual void drawB() = 0; virtual void draw(){return drawB();} }; class D : public A1, public B1 { public: virtual void drawA(){cout<<"drawA"<<endl;} virtual void drawB(){cout<<"drawB"<<endl;} }; int main() { D* pD = new D; A* pA = pD; pA->draw(); delete pD; return 0; }




Reply With Quote