C++之类的组合关系

什么是类的组合关系

类的组合关系说通俗点就是在类里面定义另一个类,类对象和被包含的对象是同生共死,是包含关系。就相当于电脑类和CPU类的关系。

组合关系怎么用

在第一个类的成员函数中,被包含的对象可以调用自己的成员函数。第一个类的头文件必须包含第二类的头文件。
被包含的得对象初始化通过第一个对象的构造函数的初始化列表进行初始化。
如:

//computer.h
#pragma once
#include<iostream>
#include"cpu.h"

using namespace std;

class computer {
private:
	int memory;
	int hardDisk;
	cpu ccpu;
public:
	computer(int memory, int hardDisk, const char *Iname, const char *Iera);
	void show();
};
//computer.cpp
#include "computer.h"
computer::computer(int memory, int hardDisk, const char *Iname, const char *Iera) 
:ccpu(Iname, Iera) {
	this->memory = memory;
	this->hardDisk = hardDisk;
	std::cout << "调用computer构造函数" << endl;
}
void computer::show() {
	cout << "----------------" << endl;
	cout << "内存为:" << memory << endl;
	cout << "硬盘为:" << hardDisk << endl;

	//咋能这样调用呢?cout << 后只能接变量,如果ccpu.show1() 改造下,返回字符串就可以
	cout << "Cpu名字为:" << ccpu.show1() << endl;
	cout << "硬盘代数为:" << ccpu.show2() << endl;
}

//cpu.h
#pragma once
#include<iostream>
#include<string>

class cpu {
private:
	std::string Iname;
	std::string Iera;
public:
	cpu(const char* Iname="Intel", const char* Iera="i9");
	std::string show1();
	std::string show2();
};
//cpu.cpp
#include "cpu.h"
cpu::cpu(const char* Iname, const char* Iera) {
	this->Iname = Iname;
	this->Iera = Iera;
	std::cout << "调用CPU构造函数" << std::endl;
}
std::string cpu::show1() {
	//std::cout << Iname << std::endl;
	return Iname;
}
std::string cpu::show2() {
	//std::cout << Iera << std::endl;
	return Iera;
}
//main.cpp
#include <iostream>
#include"computer.h"
void test() {
	computer a(8, 1000, "因特尔", "第九代");
	a.show();
}
int main() {
	test();
	system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小生乔克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值