题解 | #KiKi设计类继承#

KiKi设计类继承

http://www.nowcoder.com/practice/699ba050e2704591ae3e62401a856b0e

题目描述

KiKi理解了继承可以让代码重用,他现在定义一个基类shape,私有数据为坐标点x,y,  由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。派生类Rectangle类有数据:矩形的长和宽;派生类Circle类有数据:圆的半径。Rectangle类又派生正方形Square类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。

输入描述:

输入三行,
第一行为矩形的长和宽,
第二行为圆的半径,
第三行为正方形的边长。

输出描述:

三行,分别是矩形、圆、正方形的面积。

话不多说,这次绝对是干货!!!

#include<iostream>
using namespace std;
typedef float ElemType;
#define PI 3.14f
class shape //基类
{
private:
    ElemType x,y;
public:
    shape(ElemType sum){
        x=sum;
    }
    shape(ElemType sumX,ElemType sumY){
        x=sumX; y=sumY;
    }
    ElemType GetX(){return x;}
    ElemType GetY(){return y;}
    virtual ElemType GetArea(){return 0;}
    virtual void Print(){
        cout<<GetArea()<<endl;
    }
};
class Rectangle:public shape //矩形类(继承基类)
{
public:
    Rectangle(ElemType sum):shape(sum){}
    Rectangle(ElemType sumX,ElemType sumY):shape(sumX,sumY){}
    ElemType GetArea(){
        return GetX()*GetY();
    }
    void Print(){
        shape::Print();
    }
};
class Circle:public shape //圆形类(继承基类)
{
public:
    Circle(ElemType sum):shape(sum){}
    ElemType GetArea(){
        return PI*GetX()*GetX();
    }
    void Print(){
        shape::Print();
    }
};
class Square:public Rectangle //正方形类(继承矩形类)
{
public:
    Square(ElemType sum):Rectangle(sum){}
    ElemType GetArea(){
        return GetX()*GetX();
    }
    void Print(){
        shape::Print();
    }
};
int main()
{
    ElemType x,y,r,a;
    cin>>x>>y>>r>>a;
    Rectangle re(x,y);
    re.Print();
    Circle cir(r);
    cir.Print();
    Square sq(a);
    sq.Print();
    return 0;
}
PS:1.当基类存在某一函数,该函数在多个子类都存在时使用虚函数(大体功能相同)
        2.在子类中可调用基类共有部分的任一变量(函数)


全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务