派生类

来源:互联网 发布:cf源码 编辑:程序博客网 时间:2024/05/21 17:54
/**Copyright (c) 2013 烟台大学计算机与控制工程学院* All rights reserved* 作    者: 刘慧艳* 完成日期:2014 年6月20日* 版 本 号:v1.0* 问题描述:编写一个程序,声明抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积(结果保留两位小数),3个图形的数据在定义对象时给定。Input圆的半径矩形的边长三角形的底与高Output圆的面积矩形的面积三角形的面积*/#include <iostream>#include <iomanip>#define pi 3.1415926using namespace std;class Shape{    public:     virtual double area()=0;};class Circle:public Shape//(圆形){    public:    Circle():Shape(){}    Circle(double a):r(a){}    double area()    {        return pi*r*r;    }    private:    double r;};class Rectangle:public Shape//(矩形){     public:      Rectangle():Shape(){}    Rectangle(double a,double b):l(a),m(b){}    double area()    {        return l*m;    }     private:    double l;    double m;};class Triangle:public Shape//(三角形){     public:     Triangle():Shape(){}     Triangle(double a,double b):y(a),n(b){}    double area()    {        return (y*n)/2;    }    private:    double y;    double n;};void printArea(Circle b){    cout<<b.area()<<endl;}void printArea(Rectangle v){   cout<<v.area()<<endl;}void printArea(Triangle z){   cout<<z.area()<<endl;}int main(){    float r,a,b,w,h;    cout<<fixed<<setprecision(2);    cin>>r;    Circle circle(r);    cout<<"area of circle = ";    printArea(circle);    cin>>a>>b;    Rectangle rectangle(a,b);    cout<<"area of rectangle = ";    printArea(rectangle);    cin>>w>>h;    Triangle triangle(w,h);    cout<<"area of triangle = ";    printArea(triangle);    return 0;}

0 0
原创粉丝点击