Der Schlüssel zum Verwalten der Interaktion verschiedener Teile in einem C++-Programm besteht darin, die Schnittstelle der Programmkomponenten von ihrer Implementierung abzugrenzen. Auf Sprachebene stellt C++ eine Schnittstelle in Form von Deklarationen dar. Die Deklaration spezifiziert alle notwendigen Teile der Schnittstelle, die für eine Funktion benötigt werden, zB: Rückgabewert, Argumente, Funktionsname. Zum Beispiel:
double sqrt(double); // функция квадратного корня, которая принимает аргументы типа double и возвращает переменную типа double // Объявление класса со всеми необходимыми методами и участниками класса class Vector { public: Vector(int s); double& operator[](int i); int size(); private: double∗ elem; int sz; };
Der entscheidende Punkt dabei ist, dass die Implementierung aller Methoden und Funktionen an einer ganz anderen Stelle, in einer anderen Datei, liegen kann. Häufig werden Funktionen in Header-Dateien mit der Endung .h deklariert und die Implementierung erfolgt in Quellcode-Dateien .cpp.
Zum Beispiel die Implementierung der Quadratwurzelfunktion:
double sqrt(double d) // definition of sqrt() { // ... алгоритм нахождения квадратного корня ... }
Außerdem müssen Sie für die Klasse Vector mehrere Mitglieder implementieren:
Vector::Vector(int s) // реализация конструктора : elem{new double[s]}, sz{s} // инициализация участников { } double& Vector::operator[](int i) // реализация оператора доступа { return elem[i]; } int Vector::size() // реализация метод size() { return sz; }
Wir müssen die Vector-Funktionen definieren, aber nicht sqrt(), da es Teil der Standardbibliothek ist. Es spielt jedoch keine Rolle: Eine Bibliothek ist nur ein "anderer Code, den wir verwenden", der mit denselben Sprachfunktionen geschrieben wurde wie wir.