#include<iostream>
using namespace std;
class Figure{
public:
Figure(double a,double b){
x = a;
y = b;
}
virtual void area(){
cout<<"在基类中定义 virtual function";
cout<<"为派生类提供一个公共接口,";
cout<<"以便派生类根据需要重新定义虚函数"<<endl;
}
protected:
double x,y;
};
class Triangle:public Figure{
public:
Triangle(double a,double b):Figure(a,b)
{ };
void area(){
cout<<"三角形的高是"<<x<<",底是 "<<y;
cout<<",面积是"<<0.5*x*y<<endl;
}
};
class Square:public Figure{
public:
Square(double a,double b):Figure(a,b){
};
void area(){
cout<<"正方形的高是"<<x<<",底是 "<<y;
cout<<",面积是"<<x*y<<endl;
}
};
class Circle:public Figure{
public:
Circle(double a):Figure(a,a){
}
void area(){
cout<<"圆的半径是"<<x;
cout<<",面积是"<<3.14159*x*x<<endl;
}
};
int main()
{
Figure *p;
Triangle t(10.0,6.0);
Square s(10.0,6.0);
Circle c(10.0);
p = &t;
p->area();
p = &s;
p->area();
p= &c;
p->area();
return 0;
}
三角形的高是10,底是 6,面积是30
正方形的高是10,底是 6,面积是60
圆的半径是10,面积是314.159
来源:https://blog.csdn.net/baolang5032/article/details/99331501