6-5创建计算机 (10分)

定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,为以上的类编写构造和析构函数,注意使用类组合的思想解决该问题,使得给出的主函数代码可以正确运行并得到给出的输出结果。

main函数

/* 请在这里填写答案 */
在这里给出函数被调用进行测试的例子。例如:
int main()
{
COMPUTER cpt1(6,4.0,200,60,32); //测试带参数构造
cout<<"cpt1's parameter:"<<endl;
cpt1.showinfo();
cout<<"------------------------------"<<endl;
COMPUTER cpt2; //测试不带参数构造
cout<<"cpt2's parameter:"<<endl;
cpt2.showinfo();
cout<<"------------------------------"<<endl;
COMPUTER cpt3(cpt1); //测试复制构造
cout<<"cpt3's parameter:"<<endl;
cpt3.showinfo();
cout<<"------------------------------"<<endl;
}

无输入

输出样例:

create a CPU!
create a RAM!
create a CDROM!
create a COMPUTER with para!
cpt1's parameter:
cpu parameter:
rank:6
frequency:4
voltage:200
ram parameter:
volumn:60 GB
cdrom parameter:
speed:32
------------------------------
create a CPU!
create a RAM!
create a CDROM!
no para to create a COMPUTER!
cpt2's parameter:
cpu parameter:
rank:1
frequency:2
voltage:100
ram parameter:
volumn:1 GB
cdrom parameter:
speed:16
------------------------------
create a CPU by copy!
create a RAM by copy!
create a CDROM by copy!
create a COMPUTER by copy!
cpt3's parameter:
cpu parameter:
rank:6
frequency:4
voltage:200
ram parameter:
volumn:60 GB
cdrom parameter:
speed:32
------------------------------
destruct a COMPUTER!
destruct a CDROM!
desturct a RAM!
desturct a CPU!
destruct a COMPUTER!
destruct a CDROM!
desturct a RAM!
desturct a CPU!
destruct a COMPUTER!
destruct a CDROM!
desturct a RAM!
desturct a CPU!

分析:

此题一共有三种情况的CPU:

  1. 传入实参时
  2. 不带参数时
  3. 拷贝其他对象时

先创建COMPUTER类

class COMPUTER{
public:
COMPUTER(int i,int j,int k,int l,int m):cpu(i,j,k),ram(l),cdrom(m){
cout<<"create a COMPUTER with para!"<<endl;
}//传入实参时
COMPUTER(){
cout<<"no para to create a COMPUTER!"<<endl;
}//不传实参
COMPUTER(const COMPUTER &a):cpu(a.cpu),ram(a.ram),cdrom(a.cdrom){
cout<<"create a COMPUTER by copy!"<<endl;
}//拷贝时
~COMPUTER(){
cout<<"destruct a COMPUTER!"<<endl;
}
void showinfo(){
cpu.showinfo();
ram.showinfo();
cdrom.showinfo();
}
private:
CPU cpu;//i,j,k 三个数据成员
RAM ram;//l 一个数据成员
CDROM cdrom; // m 一个数据成员
};

再来分别实现CPU、RAM、CDROM类

一、CPU类:

class CPU{
public:
CPU(int i=1,int j=2,int k=100){//CPU有参数传入或者无参数传入时
rank=i;
frequency=j;
voltage=k;
cout<<"create a CPU!"<<endl;
}
CPU(const CPU &a){//拷贝时
rank=a.rank;
frequency=a.frequency;
voltage=a.voltage;
cout<<"create a CPU by copy!"<<endl;
}
~CPU(){
cout<<"desturct a CPU!"<<endl;
}
void showinfo(){
cout<<"cpu parameter:"<<endl;
cout<<"rank:"<<rank<<endl;
cout<<"frequency:"<<frequency<<endl;
cout<<"voltage:"<<voltage<<endl;
}
private:
int rank;
int frequency;
int voltage;
};

二、RAM类:

class RAM{
public:
RAM(int i=1){
volumn=i;
cout<<"create a RAM!"<<endl;
}
RAM(const RAM &a){
volumn=a.volumn;
cout<<"create a RAM by copy!"<<endl;
}
~RAM(){
cout<<"desturct a RAM!"<<endl;
}
void showinfo(){
cout<<"ram parameter:"<<endl;
cout<<"volumn:"<<volumn<<" GB"<<endl;
}
private:
int volumn;
};

三、CDROM类:

class CDROM{
public:
CDROM(int i=16){//有或无参数传入
speed=i;
cout<<"create a CDROM!"<<endl;
}
CDROM(const CDROM &a){//拷贝
speed=a.speed;
cout<<"create a CDROM by copy!"<<endl;
}
~CDROM(){
cout<<"destruct a CDROM!"<<endl;
}
void showinfo(){
cout<<"cdrom parameter:"<<endl;
cout<<"speed:"<<speed<<endl;
}
private:
int speed;
};

总结:

RAM、CDROM、CPU类结构相同

注意的是:在COMPUTER类中定义CPU、RAM、CDROM类的对象,并且对这些对象的函数引用

但是run stop函数是什么鬼?希望大神告诉我

挖个坑,过几天来填

PTA 创建计算机类的更多相关文章

  1. vs里根据json快速创建对应类的方法

    有时候,我们在调用别人接口的时候,服务端返回了一个json格式的字符串,我们要获取json里面的数据的话一般有两种方式: 1.通过正则 2.反序列化成一个对象 第一种方式这里不再多说,主要说一下第二种 ...

  2. [转]自己写PHP扩展之创建一个类

    原文:http://www.imsiren.com/archives/572 比如我们要创建一个类..PHP代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  3. C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看

    数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...

  4. classmethod一个用处是创建可选类构造器

    Definition and Introduction通常来说, descriptor 是一种绑定着特殊行为属性的对象, 在访问它时行为被descriptor协议定义的方法所重载.这些方法是__get ...

  5. MFC编程入门之八(对话框:创建对话框类和添加控件变量)

    创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDIT ...

  6. (spring-第17回【AOP基础篇】) 创建增强类

    一.   增强类包含的信息: a)   横切逻辑(插入的具体代码) b)   部分连接点信息(在方法的哪个位置插入代码,比如方法前.方法后等). 二.   增强的类型 每一种增强有一个需要实现的增强类 ...

  7. [Z] 计算机类会议期刊根据引用数排名

    一位cornell的教授做的计算机类期刊会议依据Microsoft Research引用数的排名 link:http://www.cs.cornell.edu/andru/csconf.html Th ...

  8. Swift游戏实战-跑酷熊猫 06 创建平台类以及平台工厂类

    这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台类 我们的平台类继承于SKNode,这样就能被添加进其它节点进而显示在场景中. 它有一个方法来创建平台,这个方法接收一个包含SK ...

  9. 利用MyEclipse自动创建PO类、hbm文件(映射文件)、DAO

    原文地址:http://blog.csdn.net/fangzhibin4712/article/details/7179414 前提条件:表sjzdfl  表sjzdxx (使用数据库MySQL) ...

随机推荐

  1. USB描述符(转)

    //============================================================================// 文件名: USBDESC.C// 用 ...

  2. water

    webchacking.kr 第5题 打开题目发现了两个按钮,分别是Login和join 打开Login发现url是http://webhacking.kr/challenge/web/web-05/ ...

  3. Microsoft Translator:打破语言障碍 拓展全球沟通新机遇

    Translator:打破语言障碍 拓展全球沟通新机遇"> 作者:Olivier Fontana, 微软研究院Microsoft Translator产品战略总监 世界越来越小,全球协 ...

  4. Win10+WSL2+Ubuntu 18.04(WSL下)+VS Code(Win10下)+TexLive 2019(Ubuntu下)安装和配置

    本人手头电脑是Win10 Home版全新安装的系统,由于不想在新系统盘里面安装TexLive导致固态硬盘不断扩大,所以,考虑安装Ubuntu做为WSL,然后把TexLive安装在Ubuntu,并通过V ...

  5. java集合-set

    #java集合-set Map用于存储key-value的映射,其中key的值是不能重复的.并且还需要正确的覆写equals方法和hashCode方法 如果我们只需要存储不重复的key,并不需要存储对 ...

  6. sql-- 找到重复数据并删除、有重复数据不插入或更新的处理方法

    表结构: 需求:找到相同的内容并删除 方法1: 通过分组找出筛选出count大于1的数据 group by可以利用聚合函数(count. sum. avg)进行分组 having 对分组的数据进行下一 ...

  7. 从0开始学Git——Git的常用配置

    配置user信息 配置user.name和user.email git config --global user.name 'admin' #设置用户名 git config --global use ...

  8. canvas初尝试

    最近学习了canvas,就拿它做了这么个小东西,感觉已经爱上canvas了.上代码 /* * @auhor : 开发部-前端组-李鑫超 * @property { tableData : {Array ...

  9. C++ non-const lvalue reference cannot bind to a temporary

    1. 问题代码 #include <iostream> #include <vector> //注意begin和end形参都声明为引用 bool find_int(std::v ...

  10. 基于osg的python三维程序开发(二)------向量

    上一篇文章展示了如何简单创建一个osg python 程序, 本篇展示了了一些基础数据结构的使用: from pyosg import * vec = osg.Vec3Array() #push ba ...