C++作业对电脑的类构造、析构和成员函数的尝试调用等操作(结合书本177页)

C++的类定义中构造函数和析构函数、成员函数等调用调试

CPU类的定义

#include<iostream>
using namespace std;



enum CPU_RANK
{
	P1 = 1,
	P2,
	P3,
	P4,
	P5,
	P6,
	P7
};

class CPU
{
public:
	CPU(CPU_RANK rank=P3, unsigned int frequency=1600,float voltage=1.5,unsigned id=0);
	~CPU();
	void show_info();
private:
	CPU_RANK cpu_rank;
	unsigned int cpu_frequency;
	float cpu_voltage;
	unsigned int cpu_id;
};

CPU::CPU(CPU_RANK rank,unsigned int frequency,float voltage,unsigned id):
	cpu_rank(rank),cpu_frequency(frequency),cpu_voltage(voltage),cpu_id(id)
{
	cout << cpu_id << "号cpu被构造。" << endl;
}

CPU::~CPU()
{
	cout << cpu_id << "号cpu被析构。" << endl;
}

void CPU::show_info()
{
	cout << "\t等级:" << cpu_rank << endl;
	cout << "\t频率:" << cpu_frequency << "MHz" << endl;
	cout <<"\t 电压:" << cpu_voltage << "V" << endl << endl;
}

RAM类的定义

#include<string>
#include<iostream>
using namespace std;


class RAM
{
public:
	RAM(string brand="金士顿",unsigned int capacity = 4096,unsigned int id =0);
	~RAM();
	void show_info();
private:
	string ram_brand;
	unsigned int ram_capacity;
	unsigned int ram_id;
};

RAM::RAM(string brand,unsigned int capacity,unsigned int id):
	ram_brand(std::move(brand)),ram_capacity(capacity),ram_id(id)
{
	cout << ram_id << "号内存被构造。" << endl;
}

RAM::~RAM()
{
	cout << ram_id << "号内存被析构。" << endl;
}

void RAM:: show_info()
{
	cout << "\t品牌:" << ram_brand << endl;
	cout << "\t容量:" << ram_capacity << endl << endl;
}

CDROM类的调用

#include<iostream>
#include<string>
using namespace std;

class CDROM
{
public:
	CDROM(string brand="华硕",unsigned int id =0);
	~CDROM();
	void show_info();
private:
	string cdrom_brand;
	unsigned int cdrom_id;
};

CDROM::CDROM(string brand,unsigned int id):cdrom_brand(brand),cdrom_id(id)
{
	cout << cdrom_id << "号光驱被构造。" << endl;
}
CDROM::~CDROM()
{
	cout << cdrom_id << "号光驱被析构。" << endl;
}
void CDROM::show_info()
{
	cout << "\t品牌:" << cdrom_brand << endl << endl;
}

Computer的类的调用以及main函数

#include<iostream>
#include<string>
#include"CPU.h"
#include"RAM.h"
#include"CDROM.h"
using namespace std;


class Computer
{
public:
	Computer(CPU_RANK cpu_rank,unsigned int cpu_frequency,float cpu_voltage,unsigned int cpu_id,
		string ram_brand,unsigned int ram_capacity,unsigned ram_id,
		string cdrom_brand,unsigned int cdrom_id,
		unsigned int id);
	~Computer();
	void show_info();
private:
	CPU cpu;
	RAM ram;
	CDROM cdrom;
	unsigned int computer_id;
};

Computer::Computer(CPU_RANK cpu_rank,unsigned int cpu_frequency,float cpu_voltage,unsigned int cpu_id,
		string ram_brand,unsigned int ram_capacity,unsigned ram_id,
		string cdrom_brand,unsigned int cdrom_id,
		unsigned int id) :
		cpu(cpu_rank,cpu_frequency,cpu_voltage,cpu_id),
		ram(ram_brand,ram_capacity,ram_id),
		cdrom(cdrom_brand,cdrom_id),
		computer_id(id)
{
	cout << computer_id <<"号计算机被构造。" << endl;
}

Computer::~Computer()
{
	cout << computer_id <<"号计算机被析构。" << endl;
}

void Computer::show_info()
{
	cout <<"CPU信息:"<< endl;
	cpu.show_info();
	cout<<"内存信息:"<< endl;
	ram.show_info();
	cout<<"光驱信息:"<< endl;
	cdrom.show_info();
}

int main()
{
	Computer c1(P5,2200,1.5,1,"金士顿",8192,1,"索尼",1,1);
	c1.show_info();
	Computer c2(P7,3600,2.2,2,"三星",4096,2,"先锋",2,2);
	c2.show_info();
	system("pause");
	return 0;
}

对代码的理解以及解释

在之间遇见的问题是string的内容需要调用#include的string而不是#include的cstring,这两者还是有区别的,之后是明白了私有成员的调用还是需要进行构造函数对其赋值才行,保护级别较高。之后,可以将类的声明放在头文件里面,这样可以使得最后呈现源文件也就是main函数存在的文件更加的简洁明了。如果需要在这之上将调用过前三个头文件的定义类写在头文件里,则需要添加判断ifndef的操作,详情见c++程序设计语言书本177页。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值