In C++ sind Klassenimplementierung und Klassenschnittstelle nicht klar getrennt:
#include "string.h"
#include "date.h"
class person
{ string name; // Implementierung
date geb; // Implementierung
public:
person(string, date); // Schnittstelle
...
};
auch wenn Änderungen sich auf die (private)
Implementierung beschränken, müssen Anwender der Klasse
neu übersetzt werden.
Abhilfe ist möglich über Zeiger auf die Implementierung:
// Forward Declarations
class string;
class date;
class personimpl;
class person
{ personimpl *impl;
public:
person(string, date); // Schnittstelle
...
};