实验3 类和对象

    本次实验主要围绕类和对象,按照课本所述类是一种抽象机制,用于描述一类事物的共同属性和行为,对象则是该类的某一特定实体或者实例,初次听这些描述其实比较晦涩,看到实例就比较易懂了,C++中的类和C语言中的结构体从形式上看很像,但是还含有结构体没有的内容,类中有外部接口和私有数据成员,私有数据成员是不能从外部进行访问的,而结构体成员却可以被任意修改。这就涉及到类的封装,他是数据与算法的结合,从而构成一个整体,这个整体之中一些成员受到保护,有效地防止了数据被胡乱修改,还有一部分是公共的,用于与外部连接。
      构造函数和析构函数使得类对象的创建和撤销变得简单,没有构造函数,类的对象很复杂,编译器很难实现其初始化,析构函数能撤销创建的对象,做善后工作,它没有返回值,且不接受任何参数,构造函数和析构函数当自己没有编写时,编译器都会自动生成隐含的构造函数和析构函数。

本次试验内容如下:
1、定义并实现一个矩形类,有长、宽两个属性,由成员函数计算矩形的面积。
#include
#include
using namespace std;

class Rectangle
{
	public:                              //外部接口 
		Rectangle(float l,float w);      //构造函数
		float area();                    //函数用于计算矩形的面积
	private:                             //私有数据成员 
		float length;                    //长 
		float width;                     //宽 
};

//类的实现
//构造函数初始化数据成员
Rectangle::Rectangle(float l,float w)
{
	length=l;
	width=w;
}

//计算面积
float Rectangle::area()
{
	return (length*width);
}

//主函数实现 
int main()
{
	float l,w;
	//提示用户输入长和宽
	cout<<"Enter the length and width of the rectangle"<>l>>w;
	Rectangle REC(l,w);        //矩形对象 
	float SREC=REC.area();
	cout<<"The area of the rectangle is "<

需要注意的是类成员函数的写法应该像构造函数一样,而不是像自定义函数那样编写,运行结果如下:
实验3 类和对象_第1张图片

2、定义一个复数类Complex,使得下面的代码能够工作。
Complex c1(3,5);   //用复数3+5i初始化c1
Complex c2=4.5     //用实数4.5初始化c2
c1.add(c2);        //将c1与c2相加,结果保存在c1中
c1.show();         //将c1输出(这时的结果应该是7.5+5i)

实现代码如下:

#include
using namespace std;

class Complex
{
	public:
		double real,imaginary;
		Complex(double re,double imag);   //构造函数实现 
		
		void add(Complex &c)   //加法实现 
		{
			real=real+c.real;
			imaginary=imaginary+c.imaginary;
		}
		void show()   //输出实现 
		{
			if(imaginary!=0)
			{
				cout<

运行结果如下:

实验3 类和对象_第2张图片
该类不仅涉及到了复制构造函数,还涉及到了类型转换构造函数
本次实验初步了解了类与对象,真正初步接触面向对象的程序设计, 这次的重点是在用于类对象初始化的构造函数,复制构造函数和类型转换构造函数。以后编写程序相信大多数时候都是在写类而不是在写函数,以后也会进一步了解面向对象的程序设计。

你可能感兴趣的:(实验3 类和对象)