实验一 类与对象
一、实验目的
1.掌握类的定义和使用。 2.掌握类的对象的声明。
3.复习具有不同访问属性的成员的访问方式。 4.观察构造函数和析构函数的执行过程。
5.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析
构函数、成员函数的执行顺序。
二、实验课时
4学时 三、实验任务
1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。
@
2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在
main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。
3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义为实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。
4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、设置与获取X和Y的值的函数,并测试程序的输出结果。
#include using namespace std; /* 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压 (voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数, voltage为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。 { 2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。 3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义为实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。 4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、设置与获取X和Y的值的函数,并测试程序的输出结果。 */ enum CPU_Rank { P1 = 1, P2, P3, P4, P5, P6, P7 }; class CPU { public: CPU(); ~CPU(); 、 void set_CPU(CPU_Rank r, int freq, float v); void get_CPU(); void run(); void stop(); private: CPU_Rank rank; int frequency; float voltage; }; void CPU::run() | { cout << \"CPU run\" << endl; } void CPU::stop() { cout << \"CPU stop\" << endl; } void CPU::set_CPU(CPU_Rank r, int f, float v) { ) rank = r; frequency = f; voltage = v; } void CPU::get_CPU() { cout << \"CPU CPU_Rank = \" << rank << endl; cout << \"CPU frequency = \" << frequency << \" MHz\" < CPU::CPU() { cout << \"CPU构造函数\" << endl; } CPU::~CPU() { cout << \"CPU析构函数\" << endl; } — class RAM { public: RAM(); ~RAM(); void run(); void stop(); void set_size(unsigned int s); void get_size(); private: unsigned int size; ] }; void RAM::run() { cout << \"RAM run\" << endl; } void RAM::stop() { cout << \"RAM stop\" << endl; } < void RAM::set_size(unsigned int s) { size = s; } void RAM::get_size() { cout << \"RAM size = \" << size << endl; } & RAM::RAM() { cout << \"RAM 构造函数\" << endl; } RAM::~RAM() { cout << \"RAM 析构函数\" << endl; } class CDROM [ { public: CDROM(); ~CDROM(); void run(); void stop(); void set_size(unsigned int s); void get_size(); private: unsigned int size; }; ¥ void CDROM::run() { cout << \"CDROM run\" << endl; } void CDROM::stop() { cout << \"CDROM stop\" << endl; } … void CDROM::set_size(unsigned int s) { size = s; } void CDROM::get_size() { cout << \"CDROM size = \" << endl; } CDROM::CDROM() , { cout << \"CDROM 构造函数\" << endl; } CDROM::~CDROM() { cout << \"CDROM 析构函数\" << endl; } 《 class Computer { public: Computer(); ~Computer(); void set_PC(); void get_PC(); void run(); void stop(); private: CPU cpu; 》 RAM ram; CDROM cdrom; }; void Computer::run() { cout << \"PC run\" << endl; (); (); (); } - void Computer::stop() { (); (); (); cout << \"PC stop\" << endl; } void Computer::set_PC() { | (P1, 2, ; (1024); (2048); } void Computer::get_PC() { (); (); (); } ) Computer::Computer() { cout << \"Computer 构造函数\" << endl; } Computer::~Computer() { cout << \"Computer 析构函数\" << endl; } ~ class Point { public: Point(); ~Point(); void setPoint(int x, int y); void getPoint(); private: int X, Y; }; — void Point::setPoint(int x, int y) { X = x; Y = y; } void Point::getPoint() { cout << \"X = \" << X << endl; cout << \"Y = \" << Y << endl; ` } Point::Point() { cout << \"Point 构造函数\" << endl; } Point::~Point() { cout << \"Point 析构函数\" << endl; } int main() { Computer PC; (); (); (); (); Point p; (12, 45); (); system(\"pause\"); return 0; } 因篇幅问题不能全部显示,请点此查看更多更全内容