• C语言 百炼成钢27


    /*
    题目63:编写C++程序完成以下功能:
    (1)声明一个纯虚函数类Shape(形状),其中包含来计算面积、计算周长的方法;
    (2)从Shape派生两个类矩形和圆形;
    (3)从矩形派生正方形;
    (4)分别实现派生类构造函数、析构函数和其他方法;
    (5)创建派生类的对象,观察构造函数、析构函数调用次序;
    (6)利用抽象类做函数参数(基类指针指向子类对象,多态特性),计算不同对象的面积和周长。
    
    */
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    using namespace std;
    
    #define PI 3.14
    
    //形状类
    class Shape{
    public:
        //计算面积
        virtual double ComputeArea() = 0;
        //计算周长
        virtual double ComputePerimeter() = 0;
        //返回名称
        virtual char* PrintName() = 0;
    };
    
    //圆类
    class Circle :public Shape{
    public:
        Circle(int r){
            this->r = r;
        }
        virtual char* PrintName(){
            return "";
        }
        //计算面积
        virtual double ComputeArea(){
            return PI*r*r;
        }
        //计算周长
        virtual double ComputePerimeter(){
            return 2* PI*r;
        }
    private:
        int r;
    };
    
    //矩形类
    class Rectangle :public Shape{
    public:
        Rectangle(int w,int h){
            width = w;
            height = h;
        }
        virtual char* PrintName(){
            return "矩形";
        }
        //计算面积
        virtual double ComputeArea(){
            return width*height;
        }
        //计算周长
        virtual double ComputePerimeter(){
            return 2 * (width+height);
        }
    protected:
        int width;
        int height;
    };
    
    //正方形类
    class Square :public Rectangle{
    public:
        Square(int edge) :Rectangle(edge, edge){}
        virtual char* PrintName(){
            return "正方形";
        }
    };
    
    void ProtectA(Shape *sp){
        printf("%s的面积是%f
    ", sp->PrintName(), sp->ComputeArea());
        printf("%s的周长是%f
    ", sp->PrintName(), sp->ComputePerimeter());
    }
    
    void main(){
        //定义圆对象
        Circle c1(1);
        ProtectA(&c1);
        //定义矩形对象
        Rectangle r1(2, 3);
        ProtectA(&r1);
        //定义正方形对象
        Square sq1(5);
        ProtectA(&sq1);
        printf("程序执行完毕!
    ");
        system("pause");
    }

  • 相关阅读:
    Java抓取网页数据(原网页+Javascript返回数据)
    FindWindow使用方法
    hadoop学习;block数据块;mapreduce实现样例;UnsupportedClassVersionError异常;关联项目源代码
    Chart控件的多种使用方法
    windows消息钩子
    编程算法基础-一刀切法
    MYSQL BLOB 字段大小以及个数的限制測试。
    linux和windows文件名称长度限制
    WINHTTP的API接口说明。
    hdu4414(DFS 找十字架数量)
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5658556.html
Copyright © 2020-2023  润新知