C++ 实验多态性实验报告

  • 格式:doc
  • 大小:87.00 KB
  • 文档页数:6

C++ 实验多态性实验报告

贵州大学实验报告

学院:电子信息学院 专业:通信工程 班级:

姓名 学号 实验组 5

实验时间 指导教师 成绩

实验项目名称 多态性

实验目的 通过让学生进行实验,使其对于动态多态性有一个较为深入的了解和熟悉。最终可以熟练使用。

实验要求 1. 编写4个重载函数Double(x),返回值为输入参数的两倍;参数类型分别为int、long、float、double,返回值类型与参数类型一样。

2. 请编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算对象面积的函数GetArea()和计算周长函数GetPerim()。

3. 对类Point重载++(自增)、--(自减)运算符。

实验原理 Visual C++的编译环境下,独立完成实验要求的内容,独立完成编写、编译以及运行的过程

实验仪器 安装了Visual C++的PC机器

实验步骤 按照实验要求的内容逐一完成实验的要求。顺序是编写、编译、运行。 C++ 实验多态性实验报告

实验内容 1. 编写4个重载函数Double(x),返回值为输入参数的两倍;参数类型分别为int、long、float、double,返回值类型与参数类型一样。

2.请编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算对象面积的函数GetArea()和计算周长函数GetPerim()。

3.对类Point重载++(自增)、--(自减)运算符。

实验数据 1、 代码如下:

#include

using namespace std;

int Double(int x);

long Double(long x);

float Double(float x);

double Double(double x);

int main()

{ int myInt = 6500;

cout<

long myLong = 65000;

cout<

float myFloat = 6.5F;

cout<

double myDouble = 6.5e20;

cout<

int Double(int x) { return 2*x;}

long Double(long x) { return 2*x;}

float Double(float x) { return 2*x;}

double Double(double x) { return 2*x;}

运行结果:

2、 代码:

#include

#define PI 3.1415926;

using namespace std;

class Shape //抽象类的 定义

{

public:

virtual double GetArea() = 0; //纯虚函数 C++ 实验多态性实验报告

virtual double GetPerim() = 0; //纯虚函数

};

class Rectangle : public Shape //矩形类,公有继承

{

public: Rectangle(double aa, double bb) //带参数的 构造函数

{

a=aa;

b=bb;

cout<<"长"<

}

virtual double GetArea()

{

return a * b;

}

virtual double GetPerim()

{

return 2*( a + b );

}

private:

double a;

double b;

};

class Circle : public Shape //圆类,公有继承

{

public: Circle(double rr) //带参数的 构造函数

{

r=rr;

cout<<"半径"<

}

virtual double GetArea()

{

return r * r * PI;

}

virtual double GetPerim()

{

return 2 * r * PI;

}

private:

double r;

};

void main()

{

double length, width;

cout << "输入长和宽: "; C++ 实验多态性实验报告

cin >> length >> width;

Rectangle rect(length, width);

cout << "面积是:"<< rect.GetArea() << endl<<"周长是:"<

double rr;

cout << "输入半径: ";

cin >> rr;

Circle cir(rr);

cout << "面积是:"<

}

运行结果:

3、 代码如下:

#include

class Point

{

public:

Point(int xx,int yy):x(xx),y(yy) {}

void display()const;

Point &operator++();

Point operator++(int);

Point &operator--();

Point operator--(int);

private:

int x,y;

};

void Point::display()const

{

cout<<"当前Point("<

}

Point &Point::operator++()

{

x++;

y++;

cout<<"执行x++,y++操作!"<

return *this;

} C++ 实验多态性实验报告

Point Point::operator++(int)

{

cout<<"执行++x,++y操作!"<

return Point(++x,++y);

}

Point &Point::operator--(){x--;y--;

cout<<"执行x--,y--操作!"<

return *this;

}

Point Point::operator--(int)

{cout<<"执行--x,--y操作!"<

return Point(--x,--y);

}

int main()

{

int x,y;

cout<<"Input x&y:";

cin>>x>>y;

Point point1(x,y);

point1.display();point1++;

point1.display();++point1;

point1.display();point1--;

point1.display();--point1;

point1.display();return 0;

}

运行结果:

C++ 实验多态性实验报告

实验总结 学习使用虚函数实现动态多态性。而虚函数就是在基类中被关键字virtual说明,并在派生类中重新定义的函数,且在派生类中重工业新定义时,函数原型,包括返回类型、函数名、参数个数与参数类型的顺序,都必须与基类中的完全相同。此外,构造函数不能是虚函数,但析构函数可以是虚函数。

函数的重载方法有一参数个数相同,但是类型不同;二参数个数不同;三coust(常量)。

指导教师意见

签名: 年 月 日

注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。