c++ Klassen schreiben. Schreiben Sie eine Klasse (mit Konstruktor, Destruktor, Kopierkonstruktor, Zuweisungsoperator), die zu jedem Zeitpunkt...?

...komplette Frage anzeigen

1 Antwort

Dein Programm gibt bei mir folgendes aus:

1
1
Instanzen: 3

Bin schon weg!
Bin schon weg!
Bin schon weg!

Der Ausdruck x.anzahlInstanzen ist ein Zeiger auf eine statische Funktion. Dafür gibt es aber keine Überladung von operator<<(). Die einzig brauchbare Umwandlung ist nach bool — daher die "1" (cout<<true; macht dasselbe).

Hier hast Du die weniger schöne Seite des Überladens und der automatischen Konvertierung kennengelernt: Manchmal findet der Compiler eine subtile Möglichkeit, den Code zu übersetzen, obwohl man eine klare Fehlermeldung erwartet hätte (hier: "() bei Funktionsaufruf vergessen.")

Im Copy-Konstruktor musst Du übrigens instanzen auch erhöhen, und im Destruktor wieder erniedrigen ("wieviele Instanzen dieser Klasse gerade existieren"). Und instanzen sollte wirklich besser ein static member sein (siehe Antwort von Elmo2999).

Aber Du bist ja noch lange nicht fertig...

Was möchtest Du wissen?