class υποκλάση : public βασική_κλάση { ...
class shape {
private:
int x, y; // Position
public:
void setposition(int x, int y);
};
void shape::setposition(int x, int y)
{
shape::x = x;
shape::y = y;
}
class circle : public shape {
private:
int radius;
public:
void setradius(int r);
};
class rectangle : public shape {
private:
int height, width;
public:
void setdimensions(int h, int w);
};
main()
{
circle c;
rectangle r;
r.setposition(1, 2);
c.setposition(3, 4);
}
class shape {
private:
int x, y;
protected:
int getx(); // Can be used by subclasses
int gety();
public:
void setposition(int x, int y);
}
main()
{
circle c;
rectangle r;
shape *sp;
r.setposition(1, 2);
c.setposition(3, 4);
sp = &c; // Implici conversion
sp->setposition(3, 3); // Set the position of c
}
class υποκλάση : public βασική_κλάση1, public βασική_κλάση2, ... { ...
Στην περίπτωση αυτή η κλάση κληρονομεί τα μέλη και τις μεθόδους όλων
των βασικών κλάσεων που δηλώθηκαν.
#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();
}
= 0τότε η συνάρτηση αυτή είναι θεωρητική (pure) δηλαδή δεν έχει υλοποίηση στη συγκεκριμένη κλάση. Παράδειγμα:
class document {
public:
virtual char *Identify() = 0;
};
Για παράδειγμα, ένας σχεδιασμός του πληροφοριακού συστήματος του Πανεπιστημίου μπορεί να ορίσει την αφηρημένη κλάση person ως βασική κλάση για τις υποκλάσεις student, employee και visitor. Αν και δε θα μπορεί να οριστεί μια μεταβλητή για την αφηρημένη κλάση person, αυτή μπορεί να περιέχει ορισμένα βασικά χαρακτηριστικά όπως birth_date και να επιβάλει την υλοποίηση συγκεκριμένων μεθόδων όπως home_page_URL() ορίζοντάς τις ως θεωρητικές.