class Shape
{
public:
// pure virtual function providing interface framework.
virtual int getArea() = 0;
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};
class Rectangle: public Shape
{
public:
int getArea()
{
return (width * height);
}
};
class Triangle: public Shape
{
public:
int getArea()
{
return (width * height)/2;
}
};
int main(void)
{
Rectangle Rect;
Triangle Tri;
Rect.setWidth(5);
Rect.setHeight(7);
cout << "Rectangle area: " << Rect.getArea() << endl;
Tri.setWidth(5);
Tri.setHeight(7);
cout << "Triangle area: " << Tri.getArea() << endl;
return 0;
}
Ergebnis: Rechteckige Fläche: 35 Fläche des Dreiecks: 17
Wir haben gesehen, wie eine abstrakte Klasse eine Schnittstelle in Form von getArea() definiert hat und zwei andere Klassen dieselbe Funktion implementiert haben, jedoch mit einem anderen Algorithmus, um die für die Form spezifische Fläche zu berechnen.