视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验3 类和对象
2025-10-01 10:18:43 责编:小OO
文档
实验3 类和对象

一、实验目的:

1.掌握类的构造方法;

2.掌握对象的使用方法。

3.复习具有不同访问属性的成员的访问方式。

4.观察构造函数和析构函数的执行过程。

5.学习类的使用方法。

6.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。

二、实验内容:

1.定义一个CPU类,包含等级(rank)、频率(freqlaency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU—Rank,定义为enum CPU—Rank{Pl=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。

2.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,edrom为CDROM类的一个对象,定义并实现这个类。

3.设计并测试一个名为Ellipse的椭圆类,其数据成员为外切矩形的左上角与右下角两个点的坐标,计算并输出椭圆的面积。

三、实验步骤:

1.首先定义枚举类型CPU_Rank,例如enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab3_1.cpp。

2.使用debug调试功能观察程序lab3_1.cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下:

3.调试操作步骤如下: 

(1)单击Build | Start Debug | Step Into命令,或按下快捷键Fll,系统进入单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio中光标停在main()函数的入口处;

(2)从Debug菜单或Debug工具栏中单击Stupe Over.此时,光标下移,程序准备执行CPU对象的初始化;

(3)单击Step Into,程序准备执行CPU类的构造函数;

(4)连续单击Step Over,观察构造函数的执行情况.直到执行完构造函数,程序回到主函数;

(5)此时程序准备执行CPU对象的run()函数.单击Step Into,程序进入run()成员函数,连续单击Step Over,直到回到main()函数;

(6)继续执行程序,参照上述的方法.观察程序执行顺序.加深对类的构造函数、析构函数、成员函数的执行顺序的认识;

(7)再试试Debug菜单栏中别的菜单项,熟悉Dehug的各种方法。

4.首先定义CPU类(可使用第2题中的CPU类)、RAM类、CDROM类。再定义Computer类:定义私有数据成员cpu、ranl、cdrom.定义公有成员函数run、stop,可在其中输出提示信息。在主程序中定义一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序.以及成员函数的调用.程序名:lab3_2.cpp。

#include

enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};

    class CPU                       //定义CPU类

    {

    private:

    CPU_Rank rank;

    int frequency;

    float voltage;

    public:

    CPU(CPU_Rank r,int f,float v)

    {  

    rank=r;

    frequency=f;

    voltage=v;

cout<<"构造了一个CPU!"<    }

~CPU(){cout<<"析构了一个CPU!"<    CPU_Rank GetRank()const{return rank;}

    int GetFrequency()const{return frequency;}

    float GetVoltage()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开始运行!"< void Stop(){cout<<"CPU停止运行!"<    };

    class RAM                   //定义RAM类

    {

        int x;

    public:

        RAM(int a){x=a;

     cout<<"构造了一个RAM!"<     ~RAM(){cout<<"析构了一个RAM!"<    };

    class CDROM                //定义CDROM类

    {

        char y;

    public:

     CDROM(char v){y=v;cout<<"构造了一个CDROM!"<     ~CDROM(){cout<<"析构了一个CDROM!"<    };

    class Computer           //定义Computer类

    {

        CPU a;

        RAM b;

        CDROM c;

    public:

        Computer(CPU_Rank x,int y,float z,int xx,char yy)//构造函数

            :a(x,y,z),b(xx),c(yy)

        {

         cout<<"构造了一个Computer!"<     ~Computer(){cout<<"析构了一个Computer!"<     void Run(){cout<<"Computer开始运行!"< void Stop(){cout<<"Computer停止运行!"<    };

    void main()

    {

        Computer niu(P6,3,2.9,4,'G');

        niu.Run();

        niu.Stop();

    } 

5.声明一个名为Ellipse的结构体,其分量为椭圆的外切矩形的左上角与右下角两个点的坐标,并用它声明两个结构体变量,分别输入顶点坐标,计算并输出椭圆的面积;

#define PI 3.14

#include

struct Ellipse

 {

     int left;

     int top;

     int right;

     int bottom;

}E0={0,4,4,0};

double Area(struct Ellipse E)

{

    return (E.top-E.bottom)*(E.right-E.left)*PI/4;

}

 void main()

 {

     Ellipse E1={-1,3,1,0};

cout< cout< }

实验总结:

此次试验对我来说比较难,大部分程序都是在同学的指导下才完成的。为我以后做实验敲响了警钟,还要继续努力才行。通过这次试验,我认识到了自己的差距,希望以后能越做越好。

信息安全一班

张巍

20070830126下载本文

显示全文
专题