C++類和對象——6-5 創建計算機 (10分)

定義一個簡單的Computer類,有數據成員芯片(cpu)、內存(ram)、光驅(cdrom)等等,有兩個公有成員函數run、stop。cpu爲CPU類的一個對象,ram爲RAM類的一個對象,cdrom爲CDROM類的一個對象,定義並實現這個類,爲以上的類編寫構造和析構函數,注意使用類組合的思想解決該問題,使得給出的主函數代碼可以正確運行並得到給出的輸出結果。

函數接口定義:
根據要求寫出類的實現代碼
裁判測試程序樣例:
/* 請在這裏填寫答案 */

在這裏給出函數被調用進行測試的例子。例如:

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!

#include<iostream>
using namespace std;
//創建CPU類
class CPU{
    int rank,frequency,voltage;//很奇怪,主函數裏面的frequency是浮點數,但最後輸出結果是整數所以這裏設置爲整型數
public:
    CPU(int r=1,int f=2, int v=100):rank(r),frequency(f),voltage(v){cout<<"create a CPU!\n";}
    CPU(const CPU&c){
        cout<<"create a CPU by copy!\n";
        rank=c.rank;
        frequency=c.frequency;
        voltage=c.voltage;
    }
    ~CPU(){cout<<"desturct a CPU!\n";}//注意輸出樣例中拼寫的是desturct
    void showinfo(){
        cout<<"cpu parameter:\n";
        cout<<"rank:"<<rank<<endl;
        cout<<"frequency:"<<frequency<<endl;
        cout<<"voltage:"<<voltage<<endl;
    }    
};
//創建RAM類 
class RAM{
    int volumn;
public:
    RAM(int v=1):volumn(v){cout<<"create a RAM!\n";}
    RAM(const RAM &r){
        cout<<"create a RAM by copy!\n";
        volumn=r.volumn;
    }
    ~RAM(){cout<<"desturct a RAM!\n";}//注意輸出樣例中拼寫的是desturct
    void showinfo(){
        cout<<"ram parameter:\n";
        cout<<"volumn:"<<volumn<<" GB"<<endl;
    }
};
//創建CDROM類
class CDROM{
    int speed;
public:
    CDROM(int s=16):speed(s){cout<<"create a CDROM!\n";}
    CDROM(const CDROM&c){
        cout<<"create a CDROM by copy!\n";
        speed=c.speed;
    }
    ~CDROM(){cout<<"destruct a CDROM!\n";}
    void showinfo(){
        cout<<"cdrom parameter:\n";
        cout<<"speed:"<<speed<<endl;
    }
};
class COMPUTER{
    //創建私有數據成員CPU RAM CDROM對象
    CPU m_cpu;
    RAM m_ram;
    CDROM m_cdrom;
public:
    //帶參數的構造函數
    COMPUTER(int rank,double frequency,int voltage,int volumn,int speed)
        :m_cpu(rank,frequency,voltage),m_ram(volumn),m_cdrom(speed){
        cout<<"create a COMPUTER with para!\n";
    }
    //不帶參數的構造函數
    COMPUTER(){
        cout<<"no para to create a COMPUTER!\n";
    }
    //拷貝構造函數
    COMPUTER(const COMPUTER&c):m_cpu(c.m_cpu),m_ram(c.m_ram),m_cdrom(c.m_cdrom){
        cout<<"create a COMPUTER by copy!\n";
    }
    ~COMPUTER(){cout<<"destruct a COMPUTER!\n";}
    void showinfo(){
        m_cpu.showinfo();
        m_ram.showinfo();
        m_cdrom.showinfo();
    }
};

做這類題,細心萬歲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章