#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
class Phone {
public:
string s_p_name;
Phone(string p_name) {
s_p_name = p_name;
cout << "phone的构造函数调用" << endl;
}
~Phone(){
cout << "phone的析构函数调用" << endl;
}
};
class App {
public:
string s_a_name;
App(string a_name) {
s_a_name = a_name;
cout << "app的构造函数调用" << endl;
}
~App() {
cout << "App的析构函数调用" << endl;
}
};
// 当其它类对象作为本类对象的成员使用的时候,先构造其它类的对象,再构造本身的。析构函数的运行顺序和构造函数相反,因为栈空间,先进后出。
class Students07 {
public:
string s_name;
Phone s_phone;
App s_app;
Students07(string s_name,string p_name,string a_name) : s_name(s_name), s_phone(p_name), s_app(a_name)
{
cout << "Students07的构造函数调用" << endl;
}
void use_phone() {
cout << s_name << "拿着" << s_phone.s_p_name << "手机,刷着" << s_app.s_a_name << endl;
}
~Students07() {
cout << "Students07的析构函数调用" << endl;
}
};
int main(void)
{
Students07 stu1("张三","华为","抖音");
stu1.use_phone();
return EXIT_SUCCESS;
}
在类中定义的数据成员一般都是基本的数据类型。但是类中的成员也可以是对象,叫做对象成员。
C++中对对象的初始化是非常重要的操作,当创建一个对象的时候,c++编译器必须确保调用了所有子对象的构造函数。如果所有的子对象有默认构造函数,编译器可以自动调用他们。先调用对象成员的构造函数,再调用本身的构造函数。
析构函数和构造函数调用顺序相反,先构造,后析构。