fork download
  1. class A
  2. {
  3. /* ... */
  4. public:
  5. virtual int method1(int x) = 0;
  6.  
  7. virtual ~A() {}
  8. };
  9.  
  10. class B : public A
  11. {
  12. /* ... */
  13. public:
  14. virtual int method1(int x) {
  15. return method2(x);
  16. }
  17. virtual int method2(int y) {
  18. return y;
  19. }
  20. /* ... */
  21. };
  22.  
  23. class C : public virtual B
  24. {
  25. /* ... */
  26. };
  27.  
  28. class D : public B
  29. {
  30. /* ... */
  31. public:
  32. virtual int method2(int y) {
  33. return y * 2;
  34. }
  35. /* ... */
  36. };
  37.  
  38.  
  39. #include <iostream>
  40. #include <memory>
  41.  
  42.  
  43. int main() {
  44. std::auto_ptr<A> const b(new B);
  45. std::cout << b->method1(1) << std::endl;
  46.  
  47. std::auto_ptr<A> const d(new D);
  48. std::cout << d->method1(1) << std::endl;
  49. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
1
2