PTA 创建计算机类
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:
- 传入实参时
- 不带参数时
- 拷贝其他对象时
先创建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 创建计算机类的更多相关文章
- vs里根据json快速创建对应类的方法
有时候,我们在调用别人接口的时候,服务端返回了一个json格式的字符串,我们要获取json里面的数据的话一般有两种方式: 1.通过正则 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 ...
- C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看
数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...
- classmethod一个用处是创建可选类构造器
Definition and Introduction通常来说, descriptor 是一种绑定着特殊行为属性的对象, 在访问它时行为被descriptor协议定义的方法所重载.这些方法是__get ...
- MFC编程入门之八(对话框:创建对话框类和添加控件变量)
创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDIT ...
- (spring-第17回【AOP基础篇】) 创建增强类
一. 增强类包含的信息: a) 横切逻辑(插入的具体代码) b) 部分连接点信息(在方法的哪个位置插入代码,比如方法前.方法后等). 二. 增强的类型 每一种增强有一个需要实现的增强类 ...
- [Z] 计算机类会议期刊根据引用数排名
一位cornell的教授做的计算机类期刊会议依据Microsoft Research引用数的排名 link:http://www.cs.cornell.edu/andru/csconf.html Th ...
- Swift游戏实战-跑酷熊猫 06 创建平台类以及平台工厂类
这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台类 我们的平台类继承于SKNode,这样就能被添加进其它节点进而显示在场景中. 它有一个方法来创建平台,这个方法接收一个包含SK ...
- 利用MyEclipse自动创建PO类、hbm文件(映射文件)、DAO
原文地址:http://blog.csdn.net/fangzhibin4712/article/details/7179414 前提条件:表sjzdfl 表sjzdxx (使用数据库MySQL) ...
随机推荐
- 安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用
你可能已经注意到了,提交搜索时, RecyclerView 要等好一会才能刷新显示搜索结果.请接受挑战,让搜索过程更流畅一些.用户一提交搜索,就隐藏软键盘,收起 SearchView 视图(回到只显示 ...
- hexo+github搭建自己的博客
之前很早就想用hexo弄一个自己独立的博客了,在博客园也写了很多的博客,不过不喜欢博客园的风格.不过今天,终于折腾成功了,用hexo搭建了一个在github写的博客,开心,后面会将自己以前的博客慢慢迁 ...
- 亚马逊,谷歌,Facebook,IBM和微软:为了AI,是的,我们在一起了
美国时间9月28日,也就是几个小时前,亚马逊,谷歌,Facebook,IBM和微软宣布成立了一家非盈利组织:人工智能合作组织(Partnership on AI),目标是为人工智能的研究制定和提供范例 ...
- 【Git】按照git提交ID导出修改的代码
#!/bin/bash IFS=$'\n' #conf start commid id startCommitId=030cd2bf4e3694fe3a3b6f069556c4ea91a9858d l ...
- 《数据结构与算法》—— O(3N)=O(N) ?
上帝的磨盘转动很慢,但是却磨得很细. --毛姆 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles ...
- 前端ps中常用的操作
昨天,ui给了个psd图,让写成网页.额,要自己切图.很久之前,操作的还凑乎.但是,好久了,都忘了.所以,打算自己记个笔记,方便以后查看. 首先,打开ps就先来设置一下ps的单位啦点击最上面的一行的编 ...
- Vue方式自动打开浏览器配置
Vue方式自动打开浏览器配置 1. 通过 package.json 配置项目 // 必须是符合规范的json语法 "vue": { "devServer": { ...
- HTML5 基础知识(1)——基本标签
## HTML**概念**:是最基础的网页开发语言(Hyper Text Markup Langage 超文本标记语言) > 1.超文本:超文本是用超链接的方式i,将各种不同空间的文字组织在一起 ...
- 机器学习基础——简单易懂的K邻近算法,根据邻居“找自己”
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的文章给大家分享机器学习领域非常简单的模型--KNN,也就是K Nearest Neighbours算法,翻译过来很简单,就是K最近邻居 ...
- [每日一题系列] LeetCode 1013. 将数组分成和相等的三个部分
题目: 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + . ...