声明一个Shape抽象类,在此基础上派生出Rectangle(矩形)和Circle(圆)类;
二者都有GetArea( )函数计算对象的面积,GetPerim( )函数计算对象的周长。
要求:请使用基类引用调用虚函数方法,实现动态多态
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
class Shape{
public:
virtual double GetArea()=0;
virtual double GetPerim()=0;
};
class Rectangle:public Shape{
public:
Rectangle(double length,double width):mLength(length),mWidth(width){}
virtual double GetArea(){
return mLength*mWidth;
}
virtual double GetPerim(){
return (mLength+mWidth)*2;
}
private:
double mLength;
double mWidth;
};
class Circle:public Shape{
public:
Circle(double r):mR(r){}
virtual double GetArea(){
return M_PI*mR*mR;
}
virtual double GetPerim(){
return mR*2*M_PI;
}
private:
double mR;
};
int main()
{
Rectangle rect(12.8,6);
Circle cle(4.5);
Shape *sh = ▭
std::cout<<sh->GetArea()<<std::endl;
std::cout<<sh->GetPerim()<<std::endl;
std::cout<<"***************************"<<std::endl;
sh = &cle;
std::cout<<sh->GetArea()<<std::endl;
std::cout<<sh->GetPerim()<<std::endl;
return 0;
}