前言
在C++中,一个类可以作为另一个类的成员,这样的成员被称为类对象成员(或者简称为对象成员)。这意味着一个类可以包含其他类的对象作为其成员之一。
一、类对象成员是什么?
类对象成员在类的定义中声明,并在类的构造函数中初始化。它们通常用于表示类之间的关联关系或者包含关系。通过将一个类的对象作为另一个类的成员,可以实现代码的模块化和组合,使得类之间的关系更加灵活和可扩展。
类对象作为类成员的时候
1.系统定义的对象也可以和自己创建的类对象传输数据
2.创建类的顺序是,先创建类中的类对象,再到自身。析构的时候反过来
3.调用类对象的类成员的时候:大类.类对象成员.成员(p1.m_phone.m_pname)
#include<iostream>
#include<string>
using namespace std;
class phone {
public:
phone(string pname) {
m_pname = pname;
cout << "phone的构造函数已调用" << endl;
}
~phone() {
cout << "phone的析构函数已调用" << endl;
}
string m_pname;
};
class person {
public:
person(string name, string phone) :m_name(name), m_phone(phone) {
cout << "person的构造函数调用" << endl;
}
string m_name;
phone m_phone;//类对象
~person() {
cout << "person的析构函数已调用" << endl;
}
};
void test01() {
person p1("雷布斯", "米果");
cout << p1.m_name << "用的是" << p1.m_phone.m_pname << endl;
}
int main(){
test01();
system("pause");
return 0;
}
二、注意事项
1.初始化对象时候person(string name, string phone) :m_name(name), m_phone(phone)
这里用括号的都是传进来的参数,m_name和m_phone这些是类内成员。
2.成员定义类对象: phone m_phone;//类对象
3.结果运行图如下:
由图可知,构造函数首先调用的是类对象成员phone的构造函数,然后才调用person类的构造函数,析构反过来。
总结
类对象成员有许多有点,首先是模块化,把类对象作为成员,提高了代码的可读性和可维护性。同时代码封装化,类对象成员可以封装其他类的实现细节,外部代码只需与包含的对象进行交互,而不需要了解其内部实现。