【C++】多态性实现练习内容

本文通过一个C++编程练习介绍如何利用多态性实现不同几何图形(如Circle, Rectangle, Triangle等)的周长、面积和体积计算。在Geometric_shape基类中声明虚函数,然后在派生类中实现,通过基类指针调用这些函数,实现了运行时的动态联编和多态。" 51283605,5648605,Ubuntu环境下Pixhawk_Ardupilot编译指南,"['嵌入式开发', '无人机技术', 'GCC交叉编译', 'Linux开发', '四轴飞行器']
摘要由CSDN通过智能技术生成

设有几何图形的派生关系如下图所示:
在这里插入图片描述
对平面图形可求周长和面积,对立体图形可以求体积以及底面图形的周长和底面积。
设有主函数如下:
int main()
{
Geometric_shape * gs[]={new Circle(10),new Rectangle(6,8),new Triangle(3,4,5),
new Box(6,8,3),new Cylinder(10,3),new Cone(10,3),new T_pyramid(3,4,5,3),new T_prism(3,4,5,3)};
for (int i=0;i<8;i++)
{
gs[i]->Show();
cout<<endl;
}
cout<<“平面图形:”<<endl;
for (i=0;i<3;i++)
{
cout<<“图形周长:”<<gs[i]->perimeter()<<’\t’;
cout<<“图形面积:”<<gs[i]->area()<<’\t’;
cout<<“图形体积:”<<gs[i]->volume()<<endl;
}
cout<<“立体图形:”<<endl;
for (i=3;i<8;i++)
{
cout<<“图形底周长:”<<gs[i]->perimeter()<<’\t’;
cout<<“图形底面积:”<<gs[i]->area()<<’\t’;
cout<<“图形体积 :”<<gs[i]->volume()<<endl;
}
return 0;
}
请编写各类的定义和实现代码,使给定的主函数main可以正确运行。
提示
用虚函数来实现主程序中的动态联编。即在Geometric_shape类中分别将计算面积、周长、体积等函数声明为虚函数后,就可以在该类的(直接或间接)派生类中定义与其基类虚函数原型相同的函数。这时,当用基类指针指向这些派生类的对象时,系统会自动用派生类中的同名函数来代替基类中的虚函数,从而实现运行时的多态。

#include<iostream>
#include<cmath>
#define PI 3.14
using namespace std;

class Geometric_shape	//几何图形
{
   
public:
	virtual void Show() = 0;
	virtual double perimeter() {
    return 0; }; //周长 
	virtual double area(){
    return 0; };		  //面积 
	virtual double volume(){
    return 0; };     //体积 
};

class Rectangle :public Geometric_shape
{
   
public:
	Rectangle(int a, int b) :Lenth(a), Width(b){
   }
	virtual void Show() {
   
		cout << "矩形长宽分别为:" << Lenth << "," << Width << endl;
	} 
	virtual double perimeter() {
    return 2 * (Lenth + Width); } 
	virtual double area() {
    return Lenth * Width; }
	virtual double volume() {
    return 0; }
protected:
	int Lenth, Width;
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值