C+±学习记录-面向对象-对象成员

一、对象成员

在C++的类中,类内的成员可以是其他类的对象,我们把这种成员称为对象成员

示例:

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
class p {
public:
string name;
public:
p(string n):name(n)
{
cout << "p的构造函数被调用" << endl;
}
~p()
{
cout << "p的析构函数被调用" << endl;
}
};//创建一个p类

//接下类创建一个a类
class a {
public:
string aname;

p p1;//a类中包含了p类的对象,此为对象成员

public:
a(string n, string m) :aname(n), p1(m)
{
cout << "a的构造函数被调用" << endl;
}
~a()
{
cout << "a的析构函数被调用" << endl;
}
};

注意:对象成员的类定义一定要写在包含该对象成员的类之前

二、构造和析构的顺序

构造时,对象成员先行调用构造函数,包含对象成员的类再调用构造函数

析构时则反过来,包含对象成员的类先调用析构函数,对象成员再调用析构函数

示例:

1
2
3
4
5
6
7
8
9
10
void test()
{
a ax("123", "456");
}
int main()
{
test();
system("pause");
return 0;
}

运行结果:

1
2
3
4
5
6
7
p的构造函数被调用
a的构造函数被调用
//构造时,p先a后

a的析构函数被调用
p的析构函数被调用
//析构时,a先p后