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:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM