C++学习类的组合方法,构造函数,析构函数,成员函数的执行过程

#include<iostream>
#include<iomanip>
#include<cmath>


using namespace std;

enum CPU_Rank{ P1=1,P2,P3,P4,P5,P6,P7 };
enum Ram_Leixing{ DDR1=1,DDR2,DDR3,DDR4};// 声明枚举类型 CPU_Rank p1-7递增 
enum CD_ROM_Jiekou{ SATA,USB};
enum CD_ROM_Anzhuang{external,builtin};

class CPU{
public:
    CPU (CPU_Rank r, int f, float v)//构造函数   
    {
        rank = r;
        frequency = f;
        voltage = v;
        cout<< "创造了一个CPU"<<endl;        
     } 
     ~CPU(){
        cout<<"析构了一个CPU!"<< endl; 
     }
     CPU_Rank GetRank() const {return rank;}//函数成员的外部接口 访问三个私有成员的接口 
     int GetFrequency() const { return frequency;}
     float GetVolatage() const { return voltage;} 
    void SetRank(CPU_Rank r){rank = r;// 设置三个私有成员的接口 
    }
    void SetFrequency(int f){ frequency = f;
    }
    void SetVoltage(float v){ voltage = v;
    }
    void Run(){
        cout<< "CPU开始运行!"<<endl; 
    }
    void Stop(){
        cout<<"CPU停止运行!"<<endl; 
    } 
private:
    CPU_Rank rank;
    int frequency;
    float voltage;
};

class RAM
{
private:
    Ram_Leixing leixing;
    int Rongliang;
    char Zhuping;
public:
    RAM (int r ,Ram_Leixing l,char z)//构造函数 
    {
        leixing = l;
        Rongliang = r;
        Zhuping = z;
        cout << "创建了一个RAM"<< endl; 

    }   
~RAM(){ //析构函数 
    cout <<"析构了一个RAM!" << endl; 
}
Ram_Leixing Getleixing() const {return leixing;} // 访问三个私有成员的外部接口 
int GetRongliang() const {return Rongliang;}
char GetZhuping() const {return Zhuping;}
void SetRongliang(int r) { // 设置三个私有成员的外部接口 
    Rongliang = r;
}
void SetRam_Leixing(Ram_Leixing l){
    leixing = l;
}
void SetZhuping(char z){
    Zhuping = z;
}
void Run (){
    cout << "RAM开始运行" << endl; 
}
void Stop (){
    cout << "RAM停止运行" << endl; 
} 
};

class  CD_ROM{
private:
    CD_ROM_Jiekou jiekou;
    CD_ROM_Anzhuang anzhuang;
    int huancun;
public :
CD_ROM(CD_ROM_Jiekou j,CD_ROM_Anzhuang a, int h){
    jiekou = j;
    anzhuang = a;
    huancun = h;
    cout<<"创建了一个CD_ROM"<<endl; 
} 
~CD_ROM(){
    cout << "析构了一个CD_ROM"<<endl;
}

//访问三个私有成员的外部接口
CD_ROM_Jiekou GetJiekou() const {return jiekou;}
CD_ROM_Anzhuang GetAnzhuang () const {return anzhuang;}
int  Gethuancun () const { return huancun;}
//设置三个私有成员的外部接口
void SetJiekou(CD_ROM_Jiekou j) 
{
    jiekou = j;
}
void SetAnzhuang( CD_ROM_Anzhuang a){
    anzhuang = a;
}
void Sethuancun (int h){
    huancun = h;
} 
void Run(){
    cout<<"CD_ROM 开始运行!"<< endl; 
}
void Stop(){
    cout<<"CD_ROM停止运行!"<< endl; 
}
};

class COMPUTER{
private:
    CPU my_cpu;
    RAM my_ram;
    CD_ROM my_cdrom;
    unsigned int storage_size;//GB
    unsigned int bandwidth;//MB
public:
    COMPUTER(CPU c, RAM r, CD_ROM cd, unsigned int s,unsigned int b);
    ~COMPUTER (){cout << "析构了一个computer!"<< endl; }
    void Run(){
        my_cpu.Run();
        my_ram.Run();
        my_cdrom.Run();
        cout << "computer开始运行!"<< endl; 
    }
    void Stop(){
        my_cpu.Stop();
        my_ram.Stop();
        my_cdrom.Stop();
        cout << "computer停止运行!"<< endl; 
    }

};

COMPUTER::COMPUTER(CPU c,RAM r,CD_ROM cd, unsigned int s, unsigned int b):my_cpu(c),my_ram(r),my_cdrom(cd)
{
storage_size = s;
bandwidth = b;
cout <<"构造了一个computer!" << endl; 
}

int main(){
CPU A(P6,300,28); //声明了一个cpu的对象 并调用了三个参数的构造函数初始化 
    A.Run();
    A.Stop();
cout<< "*****************************"<<endl;
RAM R(100,DDR4,1);
    R.Run();
    R.Stop();
cout<< "*****************************"<<endl;
CD_ROM M ( USB,builtin,10);
    M.Run();
    M.Stop();
cout<< "*****************************"<<endl;
COMPUTER C(A,R,M,100,100);
C.Run();
C.Stop();
return 0;   

}

猜你喜欢

转载自blog.csdn.net/qq_41814721/article/details/82593015