#include <iostream>
using namespace std;
class Shape
{
protected:
int weigth,heigth;
public:
Shape(int a = 0, int b = 0) //构造函数
{
weigth = a;
heigth = b;
}
virtual int area() //虚函数
{
cout<<"parent class area :"<<endl;
return 0;
}
};
class Rec: public Shape{
public:
Rec(int a = 0,int b = 0) : Shape(a ,b) {}
int area()
{
cout<<"Rec class area:"<<endl;
return (weigth * heigth );
}
};
class Tri : public Shape{
public:
Tri(int a = 0,int b = 0) : Shape(a,b) {}
int area()
{
cout<< "tri class area"<<endl;
return (weigth * heigth / 2);
}
};
int main()
{
Shape *shape;
Rec rec(10,7);
Tri tri(3,6);
//存储矩形的面积
shape = &rec;
//求矩形的面积
cout<<"rec area ="<<shape->area()<<endl;
shape = &tri;
cout<<"tri area ="<<shape->area()<<endl;
return 0;
}
运行结果:
-VirtualBox:~/demo/c++/class$ ./duotai
rec area =Rec class area:
70
tri area =tri class area
9