Παράδειγμα

Το παρακάτω παράδειγμα ορίζει τη βασική κλάση 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(12);
        c.setposition(34);
        r.setdimensions(1010);
        c.setradius(1);
        c.printarea();
        r.printarea();
        sp = &r;
        cout << sp->area();
}