C 实验多态性实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、 代码如下: #include<iostream.h>
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:
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<<Double(myInt)<<endl;
学习使用虚函数实现动态多态性。而虚函数就是在基类中被关键字 virtual 说明,
实 并在派生类中重新定义的函数,且在派生类中重工业新定义时,函数原型,包括返回
类型、函数名、参数个数与参数类型的顺序,都必须与基类中的完全相同。此外,构 验
造函数不能是虚函数,但析构函数可以是虚函数。
总
函数的重载方法有一参数个数相同,但是类型不同;二参数个数不同;三 coust
实
验 Visual C++的编译环境下,独立完成实验要求的内容,独立完成编写、编译以及运行
原
的过程
理
实
验 安装了 Visual C++的 PC 机器
仪
器
实
验 按照实验要求的内容逐一完成实验的要求。顺序是编写、编译、运行。
步
骤
实 1. 编写 4 个重载函数 Double(x),返回值为输入参数的两倍;参数类型分别为 int、 long、float、double,返回值类型与参数类型一样。
long myLong = 65000;
cout<<Double(myLong)<<endl;
float myFloat = 6.5F;
cout<<Double(myFloat)<<endl;
double myDouble = 6.5e20; 实 cout<<Double(myDouble)<<endl;}
{
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<<"半径"<<r<<endl;
}
virtual double GetArea()
{
return r * r * PI;
}
virtual double GetPerim()
{
return 2 * r * PI;
}
private:
double r;
};
void main()
验 int Double(int x)
long Double(long x) 数 float Double(float x)
{ return 2*x;} { return 2*x;} { return 2*x;}
据 double Double(double x) 运行结果:
{ return 2*x;}
}
Point Point::operator++(int) {
cout<<"执行++x,++y 操作!"<<endl; return Point(++x,++y); } Point &Point::operator--(){x--;y--; cout<<"执行 x--,y--操作!"<<endl; return *this; } Point Point::operator--(int) {cout<<"执行--x,--y 操作!"<<endl; 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; } 运行结果:
};
class Rectangle : public Shape //矩形类,公有继承
{
public: Rectangle(double aa, double bb) //带参数的 构造函数
{
a=aa;
b=bb;
cout<<"长"<<a<<"宽"<<b<<endl;
}
virtual double GetArea()
验 2.请编写一个抽象类 Shape,在此基础上派生出类 Rectangle 和 Circle,二者都有计
内 算对象面积的函数 GetArea()和计算周长函数 GetPerim()。
容 3.对类 Point 重载++(自增)、--(自减)运算符。
1、 代码如下:
#include<iostream>
验
long、float、double,返回值类型与参数类型一样。
2. 请编写一个抽象类 Shape,在此基础上派生出类 Rectangle 和 Circle,二者都有
要
计算对象面积的函数 GetArea()和计算周长函数 GetPerim()。
求 3. 对类 Point 重载++(自增)、--(自减)运算符。
(常量)。 结
指
导
教
师
意
见
签名:
年月日
注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。
贵州大学实验报告
学院:电子信息学院 专业:通信工程 班级:
姓名
学号
实验时间
指导教师
实验项目名称
多态性
实验组 5 成绩
实
验 通过让学生进行实验,使其对于动态多态性有一个较为深入的了解和熟悉。最终可以
目
熟练使用。
的
实 1. 编写 4 个重载函数 Double(x),返回值为输入参数的两倍;参数类型分别为 int、
{
double length, width;
cout << "输入长和宽: ";
cin >> length >> width; Rectangle rect(length, width); cout << "面积是:"<< rect.GetArea() << endl<<"周长是:"<<rect.GetPerim()<<endl; double rr; cout << "输入半径: "; cin >> rr; Circle cir(rr); cout << "面积是:"<<cir.GetArea() << endl<<"周长是:"<<cir.GetPerim()<<endl; } 运行结果:
int x,y; }; void Point::display()const {
cout<<"当前 Point("<<x<<","<<y<<")"<<endl; } Point &Point::operator++()
{ x++; y++; cout<<"执行 x++,y++操作!"<<endl; return *this;
2、 代码: #include<iostream> #define PI 3.1415926; using namespace std; class Shape //抽象类的 定义 { public:
virtual double GetArea() = 0; //纯虚函数
virtual double GetPerim() = 0; //纯虚函数
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:
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<<Double(myInt)<<endl;
学习使用虚函数实现动态多态性。而虚函数就是在基类中被关键字 virtual 说明,
实 并在派生类中重新定义的函数,且在派生类中重工业新定义时,函数原型,包括返回
类型、函数名、参数个数与参数类型的顺序,都必须与基类中的完全相同。此外,构 验
造函数不能是虚函数,但析构函数可以是虚函数。
总
函数的重载方法有一参数个数相同,但是类型不同;二参数个数不同;三 coust
实
验 Visual C++的编译环境下,独立完成实验要求的内容,独立完成编写、编译以及运行
原
的过程
理
实
验 安装了 Visual C++的 PC 机器
仪
器
实
验 按照实验要求的内容逐一完成实验的要求。顺序是编写、编译、运行。
步
骤
实 1. 编写 4 个重载函数 Double(x),返回值为输入参数的两倍;参数类型分别为 int、 long、float、double,返回值类型与参数类型一样。
long myLong = 65000;
cout<<Double(myLong)<<endl;
float myFloat = 6.5F;
cout<<Double(myFloat)<<endl;
double myDouble = 6.5e20; 实 cout<<Double(myDouble)<<endl;}
{
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<<"半径"<<r<<endl;
}
virtual double GetArea()
{
return r * r * PI;
}
virtual double GetPerim()
{
return 2 * r * PI;
}
private:
double r;
};
void main()
验 int Double(int x)
long Double(long x) 数 float Double(float x)
{ return 2*x;} { return 2*x;} { return 2*x;}
据 double Double(double x) 运行结果:
{ return 2*x;}
}
Point Point::operator++(int) {
cout<<"执行++x,++y 操作!"<<endl; return Point(++x,++y); } Point &Point::operator--(){x--;y--; cout<<"执行 x--,y--操作!"<<endl; return *this; } Point Point::operator--(int) {cout<<"执行--x,--y 操作!"<<endl; 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; } 运行结果:
};
class Rectangle : public Shape //矩形类,公有继承
{
public: Rectangle(double aa, double bb) //带参数的 构造函数
{
a=aa;
b=bb;
cout<<"长"<<a<<"宽"<<b<<endl;
}
virtual double GetArea()
验 2.请编写一个抽象类 Shape,在此基础上派生出类 Rectangle 和 Circle,二者都有计
内 算对象面积的函数 GetArea()和计算周长函数 GetPerim()。
容 3.对类 Point 重载++(自增)、--(自减)运算符。
1、 代码如下:
#include<iostream>
验
long、float、double,返回值类型与参数类型一样。
2. 请编写一个抽象类 Shape,在此基础上派生出类 Rectangle 和 Circle,二者都有
要
计算对象面积的函数 GetArea()和计算周长函数 GetPerim()。
求 3. 对类 Point 重载++(自增)、--(自减)运算符。
(常量)。 结
指
导
教
师
意
见
签名:
年月日
注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。
贵州大学实验报告
学院:电子信息学院 专业:通信工程 班级:
姓名
学号
实验时间
指导教师
实验项目名称
多态性
实验组 5 成绩
实
验 通过让学生进行实验,使其对于动态多态性有一个较为深入的了解和熟悉。最终可以
目
熟练使用。
的
实 1. 编写 4 个重载函数 Double(x),返回值为输入参数的两倍;参数类型分别为 int、
{
double length, width;
cout << "输入长和宽: ";
cin >> length >> width; Rectangle rect(length, width); cout << "面积是:"<< rect.GetArea() << endl<<"周长是:"<<rect.GetPerim()<<endl; double rr; cout << "输入半径: "; cin >> rr; Circle cir(rr); cout << "面积是:"<<cir.GetArea() << endl<<"周长是:"<<cir.GetPerim()<<endl; } 运行结果:
int x,y; }; void Point::display()const {
cout<<"当前 Point("<<x<<","<<y<<")"<<endl; } Point &Point::operator++()
{ x++; y++; cout<<"执行 x++,y++操作!"<<endl; return *this;
2、 代码: #include<iostream> #define PI 3.1415926; using namespace std; class Shape //抽象类的 定义 { public:
virtual double GetArea() = 0; //纯虚函数
virtual double GetPerim() = 0; //纯虚函数