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類的對象,並且對這些對象的函數引用