首页 > 其他分享 >用虚函数分别计算各种图形的面积

用虚函数分别计算各种图形的面积

时间:2023-05-10 19:22:48浏览次数:35  
标签:const 函数 Area double virtual Shape 计算 图形 public

一.问题描述:

定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算各种图形的面积,并求出它们的和。要求用基类指针数组。使它的每一个元素指向一个派生类的对象。PI=3.1415926

二.代码实现:

#include<iostream>
using namespace std;
class Shape{
public:
    virtual double Area()const=0;
};
class Circle:public Shape{
public:
    Circle(double radius):r(radius){
        
    }
    double r;
    virtual double Area()const{
        return    3.1415926*r*r;
    }

};
class Square:public Shape{
public:
    Square(double side):s(side){
        
    }
    double s;
    virtual double Area()const{
        return s*s;
    }
};
class Rectangle:public Shape{
public:
    Rectangle(double a1,double b1):a(a1),b(b1){
        
    }
    double a,b;
    virtual double Area()const{
        return a*b;
    }
};
class Triangle:public Shape{
public:
    Triangle(double width,double height):w(width),h(height){
        
    }
    double w,h;
    virtual double Area()const{
        return 0.5*w*h;
    }
};
class Trapezoid:public Shape{
public:
    Trapezoid(double shangd,double xiad,double traHeight):sd(shangd),xd(xiad),th(traHeight){}
    double sd,xd,th;
    virtual double Area()const{
        return (sd+xd)*th*0.5;
    }
};
int main(){

    Circle circle(12.6);
    Square square(3.5);
    Rectangle rectangle(4.5,8.4);
    Trapezoid trapezoid(2.0,4.5,3.2);
    Triangle triangle(4.5,8.4);
    Shape *pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle}; 
    double areas=0.0;
    for(int i=0;i<5;i++)
    {
        areas=areas+pt[i]->Area();
    }
    cout<<"total of all areas = "<<areas<<endl;
    return 0;
}

 

标签:const,函数,Area,double,virtual,Shape,计算,图形,public
From: https://www.cnblogs.com/lzh0416/p/17389075.html

相关文章

  • JDK8新特性(二)--- Option\Stream\函数式接口
    OptionalOptional是一个没有子类的工具类,Optional是一个可以为null的容器对象。它的作用主要就是为了解决避免Null检查,防止NullPointerException。//常用方法Optional.of(Tt):创建一个Optional实例Optional.empty():创建一个空的Optional实例Optional.ofNullable(T......
  • flask_视图函数的分离
    随着项目的增大,便于管理,需要把视图函数单独放一起,架构为:~启动文件~视图函数~数据处理~view~其它的帮助函数 启动有两种方法1、集中式管理注册路由,启动文件里调用视图相关的代码 2、 基于类的视图,可插拔视图disp......
  • 获取采购信息记录函数BAPI_INFORECORD_GETLIST
    DATA:lt_purchTYPETABLEOFbapieine,lt_returnTYPETABLEOFbapireturn.FIELD-SYMBOLS:<fs_return>TYPEbapireturn,<fs_purch>TYPEbapieine.CALLFUNCTION'BAPI_INFORECORD_GETLIST'EXPORTING......
  • matlab绘图中set函数的使用汇总
    Matlab绘图中set函数使用汇总%设置标题字体大小,字型set(get(gca,'title'),'FontSize',10,'FontName','宋体');%设置X坐标标题字体大小,字型set(get(gca,'XLabel'),'FontSize',10,'FontName','TimesNewRoman');%设......
  • 写C++模板函数的两种形式
    #include<iostream>template<typenameT>autof1(constT&x){std::cout<<x<<std::endl;};autof2=[](constauto&x){std::cout<<x<<std::endl;};intmain(intargc,char**argv){int......
  • 箭头函数
    箭头函数箭头函数是一个函数表达式,理论上,任何使用函数表达式的场景都可以使用箭头函数。完整语法(参数1,参数2,...)=>{//函数体}如果参数只有一个,可以省略小括号参数=>{}如果箭头函数只有一条返回语句,可以省略大括号,和return关键字参数=>返回值细......
  • 利用css var函数让你的组件样式输出规范样式API,可定制性更高;
    我们平时在使用ElementuiAntdesing这些UI库时,难免会碰到使用deep强行侵入式去修改组件内部样式的情况; 比如下列代码,我们需要把ant的分页样式进行高度自定义,就得使用deep去修改; 这种实现方式确实能够达到我们的目的,但在开发时确总觉得不太合适:1、他属于强行入侵组件内部去......
  • Five_Bus_Load_Flow:基于MATLAB/Simulink的IEEE 5节点潮流计算仿真模型。
    Five_Bus_Load_Flow:基于MATLAB/Simulink的IEEE5节点潮流计算仿真模型。五个潮流母线模块用于指定母线基准电压和光伏母线电压以及摆动母线的电压和相位。潮流参数在同步和异步电机模块的潮流选项卡中定义。仿真条件:MATLAB/SimulinkR2015bID:2850660375687736......
  • 随机颜色函数
    1//1、定义一个随机颜色函数,如果输入true(默认),2//返回#ffffff;;false返回rbg3functiongetRandomColor(flag=true){4if(flag){5constarr=['0','1','2','3','4','5','6&#......
  • 日期函数
    1//封装日期函数2functiongetDatetime(){3constdate=newDate()4letyears=date.getFullYear()5letmonth=date.getMonth()+16month=month<10?'0'+month:month7letday=date.getDate()......