Standardkonstruktor
Nach oben zu Konstruktoren - Index
An den Standardkonstruktor für class X werden keine Argumente übergeben; er hat normalerweise die Form X::X(). Wenn kein benutzerdefinierter Konstruktor für eine Klasse existiert, erzeugt der Compiler einen Standardkonstruktor. Bei der Deklaration eines Objekts innerhalb einer Klasse, wie z.B. X x, generiert der Standardkonstruktor das Objekt x.
Wie alle Funktionen können Konstruktoren Parameter mit Standardargumenten haben. Beispielsweise nimmt der Konstruktor:
X::X(int, int = 0)
ein oder zwei Argumente entgegen. Falls das zweite Argument beim Aufruf fehlt, wird 0 int eingesetzt. Ähnlich nimmt der Konstruktor
X::X(int = 5, int = 6)
ein, zwei oder auch kein Argument entgegen. Der Standardkonstruktor X::X() akzeptiert kein Argument und darf nicht mit beispielsweise X::X(int = 0) verwechselt werden, der ein Argument oder - als Standardkonstruktor - kein Argument akzeptiert.
Vermeiden Sie daher bei der Verwendung von Konstruktoren zweideutige Konstruktionen. Im folgenden Fall können die beiden Standardkonstruktoren nicht klar auseinander gehalten werden:
class X { public: X(); X(int i = 0); }; int main() { X one(10); // OK; uses X::X(int) X two; // Error;ambiguous whether to call X::X() or // X::X(int = 0) return 0; }