转载

C++继承与派生(原理归纳)

1.   C++继承与java不同,java遵循单继承,但java的接口为其不足做了很好的弥补了。 C++则是灵活的多,为多继承。即一个C++类可以同时继承N个类的属性。

C++继承与派生(原理归纳)

2. 对于继承方式 :

有三种:  public ,private,protect,对于public继承的类,其公有成员依然是公有成员,私有成员依旧是私有成员。

对于protect,private 则有限制 ,就好比一个水管,公有水管是最大号的,对于水的流量没有限制。保护水管,是中等的号的,对于大号水管的流量使其变成中等流量,对于中等以下的不限制。私有水管,则是最小号的,对于大于私有水管限制的统统的改为私有水管的标准。 其中私有继承,其实就是一种绝育的措施。就是以后的继承就没有太大意义。

C++继承与派生(原理归纳)

3.对于继承关于构造和析构顺序原里的归纳:

看代码:

 1 #include<iostream>  2 using namespace std ;  3   4 class Base1 {  5   6 public :  7     Base1() {  8         cout << "Default Base1"  << endl;  9     } 10     Base1(int i) { 11         cout << "Base1"<<i<< endl; 12     } 13     ~Base1() { 14         cout << "Base1 析构" << endl; 15     } 16 }; 17  18 class Base2 { 19  20 public : 21     Base2() { 22         cout << "Default Base2"  << endl; 23     } 24     ~Base2() { 25         cout << "Base2 析构" << endl; 26     } 27     Base2(int i) { 28         cout << "Base2" << i << endl; 29     } 30 }; 31 class Base3 { 32  33 public : 34     Base3() { 35         cout << "Default Base3" << endl; 36     } 37     ~Base3() { 38         cout << "Base3 析构" << endl; 39     } 40     Base3(int i) { 41         cout << "Base3" << i << endl; 42     } 43  44 }; 45  46  47 class Derived : public Base1, public Base2, public Base3  //(1)先 在这儿开始构造从左到右 48      //析构则是从右到左 49 { 50  51 public : 52     Derived() { 53         cout << "Default Derived" << endl; 54     } 55     ~Derived() { 56         cout << "Derived 析构" << endl; 57     } 58     Derived( int a , int  b , int c , int d )   59         :men2(b),Base1(a),Base3(c), Base2(d),men1(b) {    60         cout << "Derived" << endl; 61     }; 62  63 private : 64     //构造从左到右 65     Base3 men3; 66     Base2 men2; 67     Base1 men1; 68  69     //析构则是从底部开始往上析构,先 Base 1,2,3 70 }; 71  72 int main(void ) { 73  74     Derived obj(1,2,3,4); 75     return 0; 76      77 }

结果:

Base11 Base24 Base33 Default Base3 Base22 Base12 Derived Derived 析构 Base1 析构 Base2 析构 Base3 析构 Base3 析构 Base2 析构 Base1 析构 请按任意键继续. . .
正文到此结束
Loading...