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; verwendet X::X(int)
X two; // Fehler; unklar, ob der Aufruf von X::X() oder
// X::X(int = 0) erfolgen soll.
return 0;
}