C++语法07-类的组合

在类中定义的数据成员一般都是基本的数据类型或复合数据类型。但是还可以根据需要使用其他类的对象作为正在声明的类的数据成员。在一个类中内嵌另一个类的对象作为数据成员,称为类的组合。该内嵌对象称为对象成员,也成为子对象。

使用对象成员着重要注意的问题是如何完成对象成员的初始化工作。当创建类的对象时,如果这个类具有内嵌的对象成员,那么内嵌对象成员也将被自动创建。因此,在创建对象时既要对本类的基本数据成员初始化,又要对内嵌的对象成员进行初始化。含有对象成员的类,其构造函数和不含对象成员的构造函数有所不同。

1
2
3
4
5
6
Class X{
类名1 对象成员1
类名2 对象成员2
...
类名n 对象成员n;
};

一般来说,类X的构造函数的定义形式为:

1
2
3
X::X(形参表0):对象成员1(形参表1),对象成员2(形参表2),......{
//类X的构造函数体
}

当调用构造函数X::X()时,首先按各内嵌对象成员在类声明中的顺序依次调用它们的构造函数,对这些对象初始化。最后再执行类X的构造函数体,初始化类X中的其他成员。析构函数的调用顺序与构造函数的调用顺序相反。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
例:对象成员的初始化。
#include<iostream>
using namespace std;
class A{
public:
A(int x1,float y1){
x=x1;
y=y1;
}
void show(){
cout<<"\n x="<< x << "y=" <<y;
}
private:
int x;
float y;
};
class B{
public:
B(int x1,float y1, int z1):a(x1,y1){
z=z1;
}
void show(){
a.show();
cout<<"z="<< z;
}
private:
A a;
int z;
};
int main(){
B b(11,22,33);
b.show();
return 0;
}
-------------The End-------------
0%