终于跨出这一步:形状(二)——虚函数
来源:百度文库 编辑:中财网 时间:2024/05/09 06:50:04
8、形状(二)——虚函数
(1) 将【形状(一)】 中的基类计算面积的方法定义为虚函数,比较与【形状(一)】程序的差异;
(2) 将【形状(一)】中的基类定义抽象类,比较与【形状(一)】程序的差异。
#include
#define PI 3.1415
using namespace std;
class Shape
{
public:
Shape() {cout<<"调用构造函数Shape"<
~Shape() {cout<<"调用析构函数Shape"<
virtual double Girth()=0;
virtual double Area()=0;
};
class Rectangle: public Shape
{
private:
double len;
double wide;
public:
Rectangle(double l=0,double w=0) {len=l; wide=w; cout<<"调用构造函数Rectangle"<
void SetRectangle(double l=0,double w=0) {len=l; wide=w;}
~Rectangle(){cout<<"调用析构函数Rectangle"<
double Girth() {return (len+wide)*2;}
double Area() {return len*wide;}
};
class Circle:public Shape
{
private:
double r;
public:
Circle(double radius=0) {r=radius; cout<<"调用构造函数Circle"<
void SetCircle(double radius=0) {r=radius;}
~Circle(){cout<<"调用析构函数Circle"<
double Girth() {return 2*PI*r;}
double Area() {return PI*r*r;}
};
class Square:public Rectangle
{
public:
Square(double x=0) {Rectangle(x,x); cout<<"调用构造函数Square"<
void SetSquare(double x=0) {SetRectangle(x,x);}
~Square(){cout<<"调用析构函数Square"<
};
int main()
{
Rectangle b;
Circle c;
Square d;
double x,y,m,n;
cout<
cin>>x>>y;
b.SetRectangle(x,y);
cout<<"矩形周长为:"<
cout<<"矩形面积为:"<
cout<
cin>>m;
c.SetCircle(m);
cout<<"圆形周长为:"<
cout<<"圆形面积为:"<
cout<
cin>>n;
d.SetSquare(n);
cout<<"正方形周长为:"<
cout<<"圆形面积为:"<
system("pause");
cout<
return 0;