4.11 c++ 【继承与派生】
定义一个基类shape,在shape 的基础上派生出 rectangle 和circle ……
#include <bits/stdc++.h>
using namespace std;
const double pi=3.14159;
class Shape{
public:
void initshape()
{
area=0;
}
double getArea()
{
return area;
}
protected:
double area;
};
class Rectangle:public Shape
{
public:
void initRectangle(int x,int y)
{
initshape();
a=x;
b=y;
}
void setarea()
{
area=a*b;
}
protected:
int a;
int b;
};
class Circle:public Shape
{
public:
void initCircle(double ridus)
{
initshape();
r=ridus;
}
void setarea()
{
area=r*r*pi;
}
protected:
double r;
};
class Square:public Rectangle
{
public:
void initSquare(int a)
{
initshape();
initRectangle(a,a);
}
void setarea()
{
area=a*b;
}
};
int main()
{
Square t;
t.initSquare(3);
t.setarea();
cout<<t.getArea()<<endl;
Circle m;
m.initCircle(5);
m.setarea();
cout<<m.getArea()<<endl;
return 0;
}