#include<iostream>
using namespace std;
class shape
{
public:
virtual double area() = 0;
};
class Circle :public shape
{
public:
Circle(float rr) :r(rr) {}
virtual double area() { return 3.14 * r * r; }
private:
float r;
};
class Rectangle :public shape
{
public:
Rectangle(float aa, float bb) :a(aa), b(bb) {}
virtual double area() { return a * b; }
private:
float a, b;
};
class Trangle :public shape
{
public:
Trangle(float dd, float gg) :d(dd), g(gg) {}
virtual double area() { return d * g*0.5; }
private:
float d, g;
};
void printArea(shape &s)
{
cout << "所得的面积为"<<s.area() << endl;
}
int main()
{
Circle circle(1);
cout << "当圆的半径为1时" << endl;
printArea(circle);
Rectangle rectangle(3,4);
cout << "当矩形的长为3,宽为4时" << endl;
printArea(rectangle);
Trangle trangle(4,5 );
cout << "三角形的底为4,高为5时" << endl;
printArea(trangle);
return 0;
}
纯虚函数。
virtual double area() = 0;表明这个返回值为0,没有什么含义,将所有的纯虚函数放在一起就是抽象类。