题目描述
KiKi理解了继承可以让代码重用,他现在定义一个基类shape,私有数据为坐标点x,y, 由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。派生类Rectangle类有数据:矩形的长和宽;派生类Circle类有数据:圆的半径。Rectangle类又派生正方形Square类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。
输入描述
输入三行,
第一行为矩形的长和宽,
第二行为圆的半径,
第三行为正方形的边长。
输出描述
三行,分别是矩形、圆、正方形的面积。
示例
输入:
7 8
10
5
输出:
56
314
25
代码
#include <iostream>
using namespace std;
//这里先弄一个基类shape,然后设计一个虚函数GetArea(),里面什么也没有
class Shape{
public:
virtual float GetArea()
{
return 0.0;
}
};
//这里来一个矩形类,继承于基类,有长和宽两个数据
//两个函数,一个用来设置数据,一个为虚函数窗口
class Rectangle:public Shape{
int x;
int y;
public:
void setRectangle(int m,int n){
x=m;
y=n;
}
virtual float GetArea(){
return x*y;
}
};
//圆类,同上
class Circle:public Shape{
int r;
public:
void setCircle(int x){
r=x;
}
virtual float GetArea(){
return r*r*3.14;
}
};
//正方形类,继承于矩形类
class Square:public Rectangle{
int m;
public:
void setSquare(int x){
m=x;
}
virtual float GetArea(){
return m*m;
}
};
//主函数
int main(){
//先进行一下实例化
Rectangle r;
Circle c;
Square s;
int x,y,rr,a;
cin>>x>>y>>rr>>a;
//把实例的数据设置一下
r.setRectangle(x,y);
c.setCircle(rr);
s.setSquare(a);
//愉快地调用求面积函数叭
cout<<r.GetArea()<<endl;
cout<<c.GetArea()<<endl;
cout<<s.GetArea()<<endl;
return 0;
}
输入
7 8
10
5
输出
56
314
25