继承构造析构顺序以及原理以及重名变量函数

  1 /* 继承的内存原理 */
  2 
  3 /* 继承 */
  4 
  5 #include<iostream>
  6 
  7 using namespace std;
  8 
  9 
 10 class ye
 11 {
 12 public:
 13     int a = 11;
 14     int b;
 15 
 16     void print()
 17     {
 18         cout << typeid(*this).name() << "a = " << a << endl;
 19     }
 20 
 21     ye()
 22     {
 23         cout << "ye来了" << endl;
 24     }
 25 
 26     ~ye()
 27     {
 28         cout << "ye走了" << endl;
 29     }
 30 };
 31 
 32 class die : public ye
 33 {
 34 public:
 35     int a = 22;
 36     int c;
 37 
 38     void print()
 39     {
 40         cout << typeid(*this).name() << "a = " << a << endl;
 41     }
 42 
 43     die()
 44     {
 45         cout << "die来了" << endl;
 46     }
 47 
 48     ~die()
 49     {
 50         cout << "die走了" << endl;
 51     }
 52 
 53 };
 54 
 55 void main()
 56 {
 57     ye ye1;
 58     ye1.a = 120;
 59     ye1.print();
 60 //-----------------
 61 
 62     die die1;
 63     die1.a = 109;
 64     die1.print();
 65 
 66 //-----------------
 67     die die1;
 68     die1.print();
 69 //-----------------
 70 
 71     die die1;
 72 
 73     cout << die1.a << endl;// 子类会覆盖父类
 74 
 75     cout << die1.ye::a << endl;// 访问父类
 76 
 77     die1.print();// 子类会覆盖父类
 78     
 79     die1.ye::print();// 访问父类 需要访问子类中的父类拷贝
 80 
 81     cin.get();
 82 }
 83 
 84 class er : public die
 85 {
 86 public:
 87     er()
 88     {
 89         cout << "er走了" << endl;
 90     }
 91 
 92     ~er()
 93     {
 94         cout << "er走了" << endl;
 95     }
 96 };
 97 
 98 // ------------------------------------------------------------------
 99 
100 // 子类依赖于父类  父类不依赖于子类
101 
102 // 构造的时候  如果先实现子类,子类依赖父类 出错,先构造父类 构造子类
103 
104 // 析构的时候 如果先销毁父类 子类依赖于父类 在销毁子类出错 先销毁子类再销毁父类
105 
106 
107 
108 void main()
109 {
110 
111     die *pdie = new die;
112     delete pdie;
113 
114     cin.get();
115 }

 

posted on 2015-06-08 21:31  Dragon-wuxl  阅读(163)  评论(0)    收藏  举报

导航