- #include <iostream> 
-   
- class A 
- { 
- public: 
-     virtual void foo() = 0; 
- }; 
-   
- class B 
- { 
- public: 
-     virtual void foo() = 0; 
- }; 
-   
- class AA : public A { 
- public: 
-     virtual void foo() { a_foo(); } 
-     virtual void a_foo() = 0; 
- }; 
-   
- class BB : public B { 
- public: 
-     virtual void foo() { b_foo(); } 
-     virtual void b_foo() = 0; 
- }; 
-   
- class C : public AA, public BB 
- { 
- public: 
-     virtual void a_foo(); 
-     virtual void b_foo(); 
- }; 
-   
- void C::a_foo()  { std::cout<<"C::a_foo"<<std::endl; } 
- void C::b_foo()  { std::cout<<"C::b_foo"<<std::endl; } 
- void C::A::foo() { std::cout<<"C::A::foo"<<std::endl; } 
- void C::B::foo() { std::cout<<"C::B::foo"<<std::endl; } 
-   
- int main() 
- { 
-     C c; 
-     A* pa = &c; 
-     B* pb = &c; 
-   
-     c.a_foo(); 
-     c.b_foo(); 
-     c.A::foo(); 
-     c.B::foo(); 
-     pa->foo(); 
-     pb->foo(); 
-     pa->A::foo(); 
-     pb->B::foo(); 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgogCmNsYXNzIEEKewpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgZm9vKCkgPSAwOwp9OwogCmNsYXNzIEIKewpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgZm9vKCkgPSAwOwp9OwogCmNsYXNzIEFBIDogcHVibGljIEEgewpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgZm9vKCkgeyBhX2ZvbygpOyB9CiAgICB2aXJ0dWFsIHZvaWQgYV9mb28oKSA9IDA7Cn07CiAKY2xhc3MgQkIgOiBwdWJsaWMgQiB7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBmb28oKSB7IGJfZm9vKCk7IH0KICAgIHZpcnR1YWwgdm9pZCBiX2ZvbygpID0gMDsKfTsKIApjbGFzcyBDIDogcHVibGljIEFBLCBwdWJsaWMgQkIKewpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgYV9mb28oKTsKICAgIHZpcnR1YWwgdm9pZCBiX2ZvbygpOwp9OwogCnZvaWQgQzo6YV9mb28oKSAgeyBzdGQ6OmNvdXQ8PCJDOjphX2ZvbyI8PHN0ZDo6ZW5kbDsgfQp2b2lkIEM6OmJfZm9vKCkgIHsgc3RkOjpjb3V0PDwiQzo6Yl9mb28iPDxzdGQ6OmVuZGw7IH0Kdm9pZCBDOjpBOjpmb28oKSB7IHN0ZDo6Y291dDw8IkM6OkE6OmZvbyI8PHN0ZDo6ZW5kbDsgfQp2b2lkIEM6OkI6OmZvbygpIHsgc3RkOjpjb3V0PDwiQzo6Qjo6Zm9vIjw8c3RkOjplbmRsOyB9CiAKaW50IG1haW4oKQp7CiAgICBDIGM7CiAgICBBKiBwYSA9ICZjOwogICAgQiogcGIgPSAmYzsKIAogICAgYy5hX2ZvbygpOwogICAgYy5iX2ZvbygpOwogICAgYy5BOjpmb28oKTsKICAgIGMuQjo6Zm9vKCk7CiAgICBwYS0+Zm9vKCk7CiAgICBwYi0+Zm9vKCk7CiAgICBwYS0+QTo6Zm9vKCk7CiAgICBwYi0+Qjo6Zm9vKCk7Cn0=