一、实验目的和任务
类的定义与使用
1)掌握类的概念、定义格式、类与结构的关系、类的成员属性和类的封装性;
2)掌握类对象的定义;
3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别;
4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。
能够根据给定的要求定义类并实现类的成员函数;
二、实验原理介绍
验证性实验;
通过建立类及对象,用类的成员函数和对象访问类的成员;
利用建立类的构造函数,完成类的成员的初始化工作;
三、实验设备介绍
软件需求: Visual C++ 6.0
四、实验内容
1、声明一个CPU类,包含等级(rank)、频率(freauency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中rank为枚举类型,声明为enum CPU_Rank { p1=1,p2,p3,p4,p5,p6,p7},frequency为单位是MHz的整形数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
实验原理:构造CPU类私有成员为等级(rank)、频率(freauency)、电压(voltage),其中rank为枚举类型,声明为enum CPU_Rank { p1=1,p2,p3,p4,p5,p6,p7},然后设置public 的构造函数CPU,有频率和电压。
使频率f等于形参x,电压u等于y,此为构造的函数。
然后运用析构函数,其符号为~,运用析构函数。
一个类只能定义一个析构函数,析构函数
没有形参,且其顺序较特殊,对于含有多个对象的程序,先创建的对象后析构,后创建的对象先析构。
所以析构函数出现在最后。
此程序中,三个对象CPU run stop ,CPU析构,在主函数中运行了构造函数,run stop执行后析构。
实验源程序:
#include<iostream.h>
class CPU
{private:
int f;
double u;
enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};
public:
CPU(int x,double y)
{
f=x;
u=y;
cout<<"调用构造函数"<<"f="<<f<<"u="<<u<<endl;
}
~CPU()
{cout<<"调用析构函数"<<"f="<<f<<"u="<<u<<endl;}
void run();
void stop();
};
void CPU::run()
{
cout<<"开始执行程序"<<endl;
cout<<"等级:"<<enum(P1)<<endl;
cout<<"频率:"<<f<<"MHZ"<<endl;
cout<<"电压:"<<u<<"V"<<endl;
}
void CPU::stop()
{ cout<<"程序结束"<<endl;}
int main()
{ CPU cpu(20000,220);
cpu.run();
cpu.stop();
return 0;
}
程序运行结果:
2、声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等
等,有两个公在成员函数run、stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
实验原理:本程序段中定义4个类。
Computer中引用其他CPU RAM CDRAM 三个类中的对象,引用的格式如下:在Computer私有成员中设置引用其他类的对象。
如CPU& cpu;RAM& ram;CDROM& cdrom;构造类的构造函数和析构函数,每个类中都有run 和stop 两个对象。
实验源程序:
#include<iostream.h>
class CPU
{private:
int frequency;
float voltage;
public:
CPU(int f,float v)
{
frequency=f;
voltage=v;
cout<<"调用CPU类结构函数:"<<"f="<<frequency<<"v="<<voltage<<endl;
}
~CPU()
{cout<<"调用CPU类析构函数:"<<"f="<<frequency<<"v="<<voltage<<endl;}
void run()
{cout<<"CPU开始运行"<<endl;}
void stop()
{cout<<"CPU结束运行"<<endl;}
};
class RAM
{private:
int size;
public:
RAM(int s=0)
{
size=s;
cout<<"调用RAM类结构函数:"<<"size="<<size<<endl;
}
~RAM()
{cout<<"调用RAM类析构函数:"<<"size="<<size<<endl;}
void run()
{cout<<"RAM开始运行"<<endl;}
void stop()
{cout<<"RAM结束运行"<<endl;}
};
class CDROM
{private:
int size;
public:
CDROM(int s=0)
{
size=s;
cout<<"调用CDROM类结构函数:"<<"size="<<size<<endl;
}
~CDROM()
{cout<<"调用CDROM类析构函数:"<<"size="<<size<<endl;}
void run()
{cout<<"CDROM开始运行"<<endl;}
void stop()
{cout<<"CDROM结束运行"<<endl;}
};
class Computer
{private:
CPU& cpu;
RAM& ram;
CDROM& cdrom;
public:
Computer(CPU& c,RAM& r,CDROM& cd):cpu(c),ram(r),cdrom(cd)
{cout<<"调用Computer类结构函数:"<<endl;} void run()
{cout<<"Computer开始运行"<<endl;
cpu.run();
ram.run();
cdrom.run();}
void stop()
{cout<<"Computer结束运行"<<endl;
cpu.stop();
ram.stop();
cdrom.stop();}
};
int main()
{
CPU cpu1(1024,5.0);
RAM ram(1024);
CDROM cdrom(1024);
Computer cp(cpu1,ram,cdrom);
cp.run();
cp.stop();
return 0;
}
试验运行结果:
实验总结:通过本次试验了解了掌握了类的定义、对象的应用、成员函数的构造、构造函数及析构函数的应用及其调用的顺序,还有类的嵌用。