C++实验3_3 类和对象(3)

一、实验目的和要求

 1. 进一步掌握类与对象的定义和使用。

2. 熟悉具有不同访问属性的成员的访问方式。

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

二、实验环境(软、硬件及条件)

一台安装有Visual C++ 6.0的计算机

三、实验步骤

二、实验内容

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的值的函数,并测试之。

三、实验步骤

1.首先定义枚举类型CPU_Rank,再定义CPU类,包含等级、频率、电压等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。示例程序Lab1.cpp代码如下:

#include <iostream.h>

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

class 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!" << endl;

}

~CPU () { cout << "析构了一个CPU!" << endl; }

   void Run() {cout << "CPU开始运行!" << endl; }

void Stop() {cout << "CPU停止运行!" << endl; }

};

void main()

{

CPU a(P6,300,2.8);

a.Run();

a.Stop();

}

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

3.测试能否在main函数中获取类的对象的属性值,并分析原因。为CPU类添加一些函数,以设置和获取类的对象的属性的值,如用GetRank获取rank的值,用SetRank设置rank的值。并在主函数中测试它们。分别将这些函数设置成private或public,看看结果如何,进而分析成员的不同访问属性的差别。

4.首先定义CPU类、RAM类、CDROM类。再定义computer类:定义私有数据成员cpu、ram、cdrom,定义公有成员函数run、stop,可在其中输出提示信息。在主程序中定义一个computer的对象,调用其成员函数,观察类对象及其成员的构造与析构顺序,以及成员函数的调用。并使用debug功能观察程序的运行流程。

5.定义类Point,并测试之。用Debug功能跟踪构造函数的调用。

四、实验中遇到的问题及解决

五、实验结果及分析

1.

构造了一个CPU!

CPU开始运行!

CPU停止运行!

析构了一个CPU!

3.

#include <iostream.h>

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

class 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!" << endl;

}

~CPU () { cout << "析构了一个CPU!" << endl; }

   void Run() {cout << "CPU开始运行!" << endl; }

void Stop() {cout << "CPU停止运行!" << endl; }

void SetRank(CPU_Rank l){rank=l;}

void GetRank(){cout<<"Rank="<<rank<<endl;}

};

void main()

{

CPU a(P6,300,2.8);

a.Run();

a.Stop();

a.SetRank(P7);

a.GetRank();

}

成员函数为private时,调用时不能访问;为public时就可以调用访问。

4.

#include<iostream>

using namespace std;

class Computer

{private:

int cpu,ram,cdrom;

public:

Computer(int c,int r,int d)

{cpu=c,ram=r,cdrom=d;

cout<<"构造了一个Computer!"<<endl;}

void run(){cout<<"程序开始运行!"<<endl;}

void stop(){cout<<"程序运行结束!"<<endl;}

};

class CPU

{

private:

CPU_Rank rank;

int frequency;

float voltage;

public:

   CPU (CPU_Rank r, int f, float v)

{

rank = r;#include<iostream>

using namespace std;

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

class 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!" << endl;

}

   CPU(){cout<<"构造了一个CPU!"<<endl;}

~CPU () { cout << "析构了一个CPU!" << endl; }

   void run() {cout << "CPU开始运行!" << endl; }

void stop() {cout << "CPU停止运行!" << endl; }

};

class RAM

{private:

int space,width;

public:

RAM()

{cout<<"构造了一个RAM!"<<endl;}

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

void run(){cout<<"内存run!"<<endl;}

void stop(){cout<<"内存stop!"<<endl;}

};

class CDROM

{

public:

CDROM()

{cout<<"构造了一个CDROM!"<<endl;}

~CDROM(){cout<<"析构了一个CDROM!"<<endl;}

void run(){cout<<"光驱run!"<<endl;}

void stop(){cout<<"光驱stop!"<<endl;}

};

class Computer

{private:

CPU cpu;

RAM ram;

CDROM cdrom;

public:

Computer()

{cout<<"构造了一个Computer!"<<endl;}

    ~Computer()

{cout<<"析构了一个Computer!"<<endl;}

void run(){cout<<"程序开始运行!"<<endl;

cpu.run();

ram.run();

cdrom.run();}

void stop(){cpu.stop();

ram.stop();

cdrom.stop();

cout<<"程序运行结束!"<<endl;}

};

void main()

{Computer k;

k.run();

k.stop();

}

5.

#include <iostream>

using namespace std;

class Point

{private:

int x;int y;

public:

Point(){cout<<"构造了一个Point函数!"<<endl;}

~Point(){cout<<"析构了一个Point函数!"<<endl;}

Point(int l,int s){cout<<"("<<l<<","<<s<<")"<<endl;}

void Setpoint(int m,int n){x=m,y=n;}

void Getpoint(){cout<<"("<<x<<","<<y<<")"<<endl;}

};

void main()

{Point o(4,5),p;

p.Setpoint(5,6);

p.Getpoint();

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值