简单的一个大类A中,包含了两个小类,B,C。 以Computer为大类。中间省去了一些接口函数和析构函数,整体功能可以实现。
#include<iostream>
using namespace std;
enum CPU_rank {p1=1,p2,p3,p4,p5,p6}; //定义的是枚举,放在类外
class CPU{
public:
CPU( CPU_rank r, int f, float v) { //r等等为形参
rank = r;
fren = f;
voltage = v;
cout << "构造了一个CPU函数\n";
}
~CPU() {
cout << "构造了一个CPU析构函数\n";
}
CPU_rank getrank( )const { return rank; }//私有变量的访问接口
int getfren() const{ return fren; }
float getvolt()const { return voltage; }
void run();
void stop();
private:
CPU_rank rank;
int fren;
float voltage;
};
void CPU::run() {
cout << "进入了CPU运行函数\n";
}
void CPU::stop() {
cout << "进入了CPU停止函数\n";
}
enum RAM_rank { DDR2 = 2, DDR3, DDR4 };
class RAM {
public:
RAM(RAM_rank d, int s, float v) {
ddr = d;
size = s;
volt = v;
cout << "构造了一个RAM函数\n";
}
~RAM() {
cout << "构造了一个RAM析构函数\n";
}
void run() {
cout << "进入了RAM运行函数\n";
}
void stop() {
cout << "进入了CPU停止函数\n";
}
RAM_rank getrank()const { return ddr; }
int getsize()const { return size; }
float getv()const { return volt; }
private:
RAM_rank ddr;
int size;
float volt;
};
class Computer {
public:
CPU my_cpu; //my_cpu 是CPU对象的形参
RAM my_ram;
int x;
int y;
Computer(CPU a, RAM b, int x, int y) :my_cpu(a), my_ram(b) { //如果写在类的外部,只需要写到第一个圆括号。外部声明时这一行都要写,均是形参
money = x;
money = y;
cout << "构造了一个电脑\n";
}
void run() {
my_cpu.run();
my_ram.run();
cout << "电脑在运行...\n";
}
private:
CPU my_cpu;
RAM my_ram;
int money;
int year;
};
int main() {
CPU a(p3, 300, 2.8);
a.run();
a.stop();
cout << "*****************************\n";
RAM b(DDR3, 200, 5.4);
b.run();
b.stop();
cout << "**********************************\n";
Computer c(a, b, 100000, 2018);
c.run();
system("pause");
return 0;
}