Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Base1
  5. {
  6. public:
  7.     Base1(int a = 0)
  8.     {
  9.         p = a; q = a + 1;
  10.         cout << "Base1: " << p << "," << q << endl;
  11.     }
  12.     Base1(const Base1& r)
  13.     {
  14.         cout << "Base1.p: " << r.p << endl
  15.             << "Base1.q: " << r.q << endl;
  16.     }
  17.     Base1& operator=(const Base1& r)
  18.     {
  19.         if (this != &r)
  20.         {
  21.             p = r.p + 1;
  22.             q = r.q + 2;
  23.             cout << "Base1.p: " << p << endl
  24.                 << "Base1.q: " << q << endl;
  25.         }
  26.         return *this;
  27.     }
  28.     ~Base1()
  29.     {
  30.         cout << "~Base1()\n";
  31.     }
  32. private:
  33.     int p, q;
  34. };
  35. class Base2
  36. {
  37. public:
  38.     Base2(int b = 0)
  39.     {
  40.         p = b; q = b + 1;
  41.         cout << "Base2: " << p << "," << q << endl;
  42.     }
  43.     Base2(const Base2& r)
  44.     {
  45.         p = r.p + 1;
  46.         q = r.q + 2;
  47.         cout << "Base2.p: " << p << endl
  48.             << "Base2.q: " << q << endl;
  49.     }
  50.     ~Base2()
  51.     {
  52.         cout << "~Base2()\n";
  53.     }
  54. protected:
  55.     int p, q;
  56. };
  57.  
  58. class Der : protected Base2, public Base1
  59. {
  60. public:
  61.     Der(int a = 2, int b = 1, int c = 1) : Base1(a), Base2(b), m(1)
  62.     {
  63.         p = c; q = a - b;
  64.         n = Base2(8);
  65.         cout << "Der: " << p << "," << q << endl;
  66.     }
  67.     Der(const Der& r)
  68.     {
  69.         cout << "Der::Der(const Der& r)\n";
  70.         p = r.p + 3; q = r.q + 2;
  71.         cout << "Der.p: " << p << endl
  72.             << "Der.q: " << q << endl;
  73.     }
  74.     Der& operator=(const Der& r)
  75.     {
  76.         cout << "Der::operator=()\n";
  77.         if (this != &r)
  78.         {
  79.             Base1::operator=(r);
  80.             Base2::p = r.p + 1;
  81.             Base2::q = r.q + 2;
  82.             p = r.p; q = r.q;
  83.             m = r.m;
  84.             n = r.n;
  85.         }
  86.         return *this;
  87.     }
  88.     ~Der()
  89.     {
  90.         cout << "~Der()\n";
  91.     }
  92. private:
  93.     int p, q;
  94.     Base1 m;
  95.     Base2 n;
  96. };
  97.  
  98. int main()
  99. {
  100.     Der x(1, 3, 5), y(2, 4);
  101.     Der z = x;
  102.     z = y;
  103.     return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement