C++ 28 之 类对象作为类成员

发布于:2024-06-14 ⋅ 阅读:(124) ⋅ 点赞:(0)
#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++编译器必须确保调用了所有子对象的构造函数。如果所有的子对象有默认构造函数,编译器可以自动调用他们。先调用对象成员的构造函数,再调用本身的构造函数

析构函数和构造函数调用顺序相反,先构造,后析构。


网站公告

今日签到

点亮在社区的每一天
去签到