Παράδειγμα
Το παρακάτω παράδειγμα ορίζει τη βασική κλάση shape και τις υποκλάσεις
της circle και rectangle.
Η μέθοδος area ορίζεται ως virtual με αποτέλεσμα να μπορεί να οριστεί
για τις υποκλάσεις και κατά την εκτέλεση του προγράμματος να εκτελεστεί
η σωστή έκδοσή της.
Η συνάρτηση printarea της shape εκμεταλλεύεται τη δυνατότητα αυτή και
μπορεί να κληθεί (και να δουλέψει σωστά) με όρισμα οποιαδήποτε από τις
υποκλάσεις της shape.
#include <iostream.h>
class shape {
private:
        double x, y;            // Position
public:
        void setposition(double x, double y);
        void printarea();
        virtual double area();
};
double
shape::area()
{
        return (0);
}
void
shape::printarea()
{
        cout << area() << "\n";
}
void shape::setposition(double x, double y)
{
        shape::x = x;
        shape::y = y;
}
class circle : public shape {
private:
        double radius;
public:
        void setradius(double r);
        virtual double area();
};
void
circle::setradius(double r)
{
        radius = r;
}
double
circle::area()
{
        return (3.1415927 * radius * radius);
}
class rectangle : public shape {
private:
        double height, width;
public:
        void setdimensions(double h, double w);
        virtual double area();
};
void
rectangle::setdimensions(double h, double w)
{
        height = h;
        width = w;
}
double
rectangle::area()
{
        return (height * width);
}
main()
{
        circle c;
        rectangle r;
        shape *sp;
        r.setposition(1, 2);
        c.setposition(3, 4);
        r.setdimensions(10, 10);
        c.setradius(1);
        c.printarea();
        r.printarea();
        sp = &r;
        cout << sp->area();
}