Was bedeutet der Doppelpunkt bei dieser C++-Implementierung?

4 Antworten

Der doppelpunkt sagt dem Compiler das der funktionskopf hier zu Ende ist und nun Initialisierungen von Basis Klassen Funktionen oder member Variablen folgen. Es ist dringend zu empfehlen member Variablen im Konstruktor auf diese weise zu initialisieren um sicher zu stellen das eine neue Instanz niemals uninitialisierte member haben kann.

Woher ich das weiß:Studium / Ausbildung – Informatik Studium

Das ist der Scope-Operator. Sonst würdes du einen Konstruktor im "global scope" definieren. Du möchtest den Konstruktor aber in der Klasse haben (ergibt auch anders wenig Sinn und funktioniert nicht).

ich spreche aber von dem zweiten "einzelnen" Doppelpunkt zwischen init und varZ.. der irritiert mich..

0
@charles2520

Achso. Alles dahinter (per Komma separiert) ist für Initialisierungen. Wenn die Klasse ein Objekt hat, welches einen Parameter erwartet, muss dieser natürlich übergeben werrden.

Ebenso kann man aber auch primitive Datentypen initialisieren. Die Syntax ist wiefolgt:

MyConstructor(MyObject obj) : m_obj(obj) {
//...
}
3

Der Doppelpunkt ist ein Operator der besagt, dass diese Implementierung zur Klasse FunnyClass gehört (nur nötig wenn man Methoden außerhalb der Klassendefinition implementiert).

ich spreche aber von dem zweiten "einzelnen" Doppelpunkt zwischen init und varZ.. der irritiert mich..

0

Mein Beileid, dass du solche - an den Haaren herbeigezogenen - Aufgaben lösen musst. Etwas Realistischeres ist deinem Lehrer / Professor wohl nicht eingefallen. ><

Kein Mensch würde einen Konstruktor so schreiben, und variablen so benennen.

Allein in deinem kurzen Beispiel sehe ich auf Anhieb 5 sog. Anti-Patterns.

Du solltest in Erwägung ziehen, deinen Professor zu vermöbeln! :)

PS: Die anderen haben deine Frage zwar schon zur Genüge beantwortet, aber beschäftige dich mal mit RAII in C++! :)