类的组合:类中的数据成员是另一个类的对象:可以在已抽象的基础上实现更复杂的抽象
也就是一个类中抱含了另一个类的对象;
-----------------------------------------------------------
类组合的构造函数:不仅要负责对本类中的基本数据类型成员数据赋初值,也要对对象成员赋初值:
1 #include<iostream> 2 using namespace std; 3 class A 4 { 5 public: 6 A(int aa):a(aa) 7 {} 8 int a; 9 }; 10 11 class B 12 { 13 public: 14 B(int bb):b(bb) 15 {} 16 int b; 17 }; 18 19 class C 20 { 21 private: 22 A a1; 23 B b1; 24 int c; 25 public: 26 C(int i,int k,int j); 27 void display() 28 { 29 cout<<a1.a<<b1.b<<c<<" "; 30 } 31 }; 32 C::C(int i,int k,int j):a1(i),b1(k),c(j)//注意类中对象的传参:先是对象初始化,最后才组合类的初始化 33 { 34 } 35 36 int main() 37 { 38 C c1(1,2,3); 39 c1.display(); 40 }
1、构造函数调用顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)
2、若调用默认构造函数(即无形参的),则内嵌对象的初始化也将调用相应的默认构造函数
注意:在类中只能声明对象,而不能初始化:如A a(5),这种事错误的。