C++实验类与对象

桂 林 理 工 大 学
实 验 报 告
实验名称 类与对象 日期 2018年 04 月17 日
一、实验目的:
1. 掌握类的定义和使用。
2. 掌握类的对象的声明。
3. 复习具有不同访问属性的成员的访问方式。
4. 观察构造函数和析构函数的执行过程。
5. 使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
二、实验环境:
Visual C++
三、实验内容:
(写出主要的内容)

  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函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。
#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);
	~CPU ();
   void Run();
	void Stop();
};
CPU::CPU (CPU_Rank r, int f, float v)
	{
		rank = r;
		frequency = f;
		voltage = v;
		cout << "构造了一个CPU!" << endl;
	}
CPU::~CPU () 
{ cout << "析构了一个CPU!" << endl; }
void CPU::Run() 
{cout << "CPU开始运行!" << endl; }
void CPU::Stop() 
{cout << "CPU停止运行!" << endl; }
void main()
{
	CPU a(P2,250,1.5);
	a.Run();
	a.Stop();
}

输出结果:构造了一个CPU!
CPU开始运行!
CPU停止运行!
析构了一个CPU!
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函数中测试这个类,分析成员函数的运行顺序。

#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);
	CPU();
	~CPU ();
	void Run(); 
	void Stop(); 
};
CPU::CPU (CPU_Rank r, int f, float v)
{
	rank = r;
	frequency = f;
	voltage = v;
	cout << "构造了一个CPU!" << endl;
}
CPU::CPU()
{
	cout << "构造了一个CPU!" << endl;
}
CPU::~CPU ()
{ 
	cout << "析构了一个CPU!" << endl;
}
void CPU::Run() 
{cout << "CPU开始运行!" << endl; }
void CPU::Stop()
{cout << "CPU停止运行!" << endl; }

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

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

class COMPUTER
{
private:
	CPU cpu;
	RAM ram;
	CDROM cdrom;
public:
	COMPUTER();
	~COMPUTER ();
	void Run() ;
	void Stop() ;
};
COMPUTER::COMPUTER()
{
	cout << "构造了一个COMPUTER!" << endl;
}
COMPUTER::~COMPUTER ()
{ 
	cout << "析构了一个COMPUTER!" << endl;
}
void COMPUTER::Run() 
{
	cout << "COMPUTER开始运行!" << endl;
	cpu.Run();
	ram.Run();
}
void COMPUTER::Stop() 
{
	ram.Stop();
	cpu.Stop();
	cout << "COMPUTER停止运行!" << endl; 
}
void main()
{
	COMPUTER a;
	a.Run();
	a.Stop();
}

输出结果:构造了一个CPU!
构造了一个RAM!
构造了一个CDROM!
构造了一个COMPUTER!
COMPUTER开始运行!
CPU开始运行!
RAM开始运行!
RAM停止运行!
CPU停止运行!
COMPUTER停止运行!
析构了一个COMPUTER!
析构了一个CDROM!
析构了一个RAM!
析构了一个CPU!
4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、拷贝构造函数、设置与获取X和Y的值的函数,并测试之。

#include<iostream.h>
class Point
{
private:
	int X,Y;
public:
	Point(int x=0,int y=0);
	Point(Point &p);
	int GetX();
	int GetY();
};
Point::Point(int x,int y)
{
	X=x;
	Y=y;
}
Point::Point(Point &p)
{
	X=p.X;
	Y=p.Y;
	cout<<"拷贝构造函数被调用!"<<endl;
}
int Point::GetX()
{
	return X;
}
int Point::GetY()
{
	return Y;
}
void main()
{
	Point A(3,5);
	Point B(A);
	cout<<A.GetX()<<endl;
	cout<<B.GetX()<<endl;
}

输出结果:拷贝构造函数被调用!
3
3
四、心得体会:
1、通过学习类与对象,基本了解掌握了面向对象的基本操作。
2、熟悉了数据成员与成员函数的不同。
3、不同类之间的不能直接使用成员函数。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值