I learned that pure virtual function can be called in abstract classes.
Let’s look at an example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <iostream> using namespace std;
class CPolygon { protected: int width, height; public: void set_values (int a, int b) { width=a; height=b; } virtual int area (void) =0; void printarea (void) { cout << this->area() << endl; } };
class CRectangle: public CPolygon { public: int area (void) { return (width * height); } };
class CTriangle: public CPolygon { public: int area (void) { return (width * height / 2); } };
int main () { CRectangle rectangle; CTriangle triangle; CPolygon * ppoly1 = &rectangle; CPolygon * ppoly2 = ▵ ppoly1->set_values (4,5); ppoly2->set_values (4,5); ppoly1->printarea(); ppoly2->printarea(); return 0; }
|
The output will be:
Reference:
Polymorphism