Advertisement
Guest User

Untitled

a guest
Nov 16th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int const letter_count = 10;
  4. using namespace std;
  5.  
  6. class B {
  7. int i_;
  8. public:
  9. B(int i) : i_(i) {}
  10. int inc() { return doInc(); }
  11. protected:
  12. virtual int doInc() { return ++i_; }
  13.  
  14. };
  15.  
  16. class D1 : public B {
  17. public:
  18. D1(int i) : B(i-1) {}
  19. protected:
  20. virtual int doInc() { return B::doInc(); }
  21. };
  22.  
  23. class D2 : public B {
  24. public:
  25. D2(int i) : B(i-2) {}
  26. protected:
  27. virtual int doInc() { return 3; }
  28. };
  29.  
  30. class M : public D1, public D2 {
  31. public:
  32. M(int i) : D1(i), D2(i) {}
  33. protected:
  34. virtual int doInc() { return D1::doInc() + D2::doInc(); }
  35. };
  36.  
  37. void zad3() {
  38. M m(letter_count);
  39. D1& ref1 = static_cast<D1&>(m);
  40. cout << ref1.inc();
  41. cout << endl;
  42. D2& ref2 = static_cast<D2&>(m);
  43. cout << ref2.inc();
  44. cout << endl;
  45. }
  46.  
  47. int main()
  48. {
  49. zad3();
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement