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. Jquery 实现原理深入学习(3)

    前言 1.总体结构 √ 2.构建函数 √ 3.each功能函数实现 √ 4.map功能函数实现 √ 5.sizzle初步学习 6.attr功能函数实现 7.toggleClass功能函数实现(好伤) ...

  2. android应用程序源码结构分析

    工程; 1. src文件夹存放源码. 2. gen下有跟src中一样的包文件,内部有一个名为R.java类,它是自动生成的一个类:该目录不用我们开发人员维护, 但又非常重要的目录 . 该目录用来存放由 ...

  3. SurfaceView和TextureView的区别

    SurfaceView和TextureView均继承于android.view.View,与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能.Surfac ...

  4. 分割文件和数据(linux)

    在某些情况下,必须把文件分割成多个更小的片段.如今我们分割文件的目的比如:提高可读性.生成日志.通过Email发送文件等等. 假设我们有一个erro.log的测试文件,其大小为14M.你可以将该文件分 ...

  5. react-intl 实现 React 国际化多语言

    效果预览 React Intl 国际化步骤 创建国际化资源文件 根据语言获取国际化资源 引入 react-intl 的 local data 创建 LocaleProvider 国际化上下文组件 创建 ...

  6. 使用veloticy-ui生成文字动画

    前言 最近要实现一个类似文字波浪线的效果,使用了velocity-ui这个动画库,第一个感觉就是使用简单,代码量少,性能优异,在此简单介绍一下使用方法,并实现一个看上去不错的动画.具体使用方法可以点击 ...

  7. Generator的异步编程

    对比下常用的异步处理的方案: 1,回调 我们常说的 “回调地狱”,就是多个异步操作时候,代码多重嵌套,异步之前形成强耦合,如果修改一处,其他地方也是跟着修改.(callback hell). 2,pr ...

  8. centos7下pymysql安装

    1. 安装 添加mysql yum respository 添加 MySQL Yum Repository 到你的系统 repository 列表中,执行 wget http://repo.mysql ...

  9. 解决git推不上去1

    在使用 Android Studio 对源代码进行push到码云时可出错,报错如下: error: failed to push some refs to 'https://gitee.com/文件路 ...

  10. 鸡汤 & 毒鸡汤

    1.别低估任何人. 2.你没那么多观众,别那么累. 3.温和对人对事.不要随意发脾气,谁都不欠你的. 4.现在很痛苦,等过阵子回头看看,会发现其实那都不算事. 5.和对自己有恶意的人绝交.人有绝交,才 ...