类与类之间的关系
- 横向关系
依赖 关联 聚合 组合
判断方法:
生命周期有关系:组合,聚合
聚合:包含多个相同的类
组合:定义的时候就要有
依赖:只要使用就必须要有
关联:可有可无
- 纵向关系
继承
基类( 父类 )->派生类(子类)
1 #include <iostream> 2 using namespace std; 3 4 class CPerson 5 { 6 protected: 7 8 public: 9 int age; 10 CPerson() 11 { 12 age = 100; 13 } 14 }; 15 class CSuperman :public CPerson 16 { 17 protected: 18 19 public: 20 int age; 21 CSuperman() 22 { 23 age = 123; 24 } 25 }; 26 int main() 27 { 28 CPerson person; 29 CSuperman superman; 30 cout<<superman.age<<endl; //123 31 cout<<superman.CPerson::age<<endl; //100 32 superman.CPerson::age = 111; 33 cout<<person.age<<endl;//改写的为父类中的子类,与父类没关系 //100 34 cout<<superman.CPerson::age<<endl; //111 35 }
父类中 private 成员在无论怎样继承,在子类中都不可访问
public 继承 public和protected 没有变化
protected 继承 public 变成 protected
private 继承 public, protected 变成 private
继承的构造和析构
1 #include<iostream> 2 using namespace std; 3 4 class AA 5 { 6 public: 7 AA() 8 { 9 cout << "AA" << endl; 10 } 11 ~AA() 12 { 13 cout << "~AA" << endl; 14 } 15 }; 16 17 class BB:public AA 18 { 19 public: 20 BB() 21 { 22 cout << "BB" << endl; 23 } 24 ~BB() 25 { 26 cout << "~BB" << endl; 27 } 28 }; 29 30 class CC 31 { 32 public: 33 CC() 34 { 35 cout << "CC" << endl; 36 } 37 ~CC() 38 { 39 cout << "~CC" << endl; 40 } 41 }; 42 43 class DD:public CC 44 { 45 public: 46 BB b; 47 public: 48 DD() 49 { 50 cout << "DD" << endl; 51 } 52 ~DD() 53 { 54 cout << "~DD" << endl; 55 } 56 }; 57 58 int main() 59 { 60 DD d; 61 62 return 0; 63 }