Παράδειγμα

Το παρακάτω παράδειγμα ορίζει τη βασική κλάση 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();
}