Hallo habe ich diese MethodeC++ {} nach Methode macht was es bedeutet
surface::surface(const surface& s) :
ref{s.ref->clone()}
{}
Was bedeutet {} nach dieser Methode bedeuten? Wenn möglich, erklären Sie mir das an einem Beispiel.
Hallo habe ich diese MethodeC++ {} nach Methode macht was es bedeutet
surface::surface(const surface& s) :
ref{s.ref->clone()}
{}
Was bedeutet {} nach dieser Methode bedeuten? Wenn möglich, erklären Sie mir das an einem Beispiel.
Dies ist keine gewöhnliche Methode: Es ist ein Konstruktor mit einem leeren Körper. Der Schlüssel hier ist, was nach dem Doppelpunkt passiert (:
): das sind mem-Initialisierer, die erzählen, wie man die Mitgliedsvariablen konstruiert.
Also, wenn ich es gut verstehe senden Sie uns zum zweiten Konstruktor, der in einer anderen Struktur sein kann, die davon erbt? – gamernoob
@gamernoob tatsächlich. Wenn ref kein Member, sondern eine Basisklasse ist, wird angezeigt, wie die Basisklasse erstellt wird. Beachten Sie, dass alle mem-Initialisierer aufgerufen werden, bevor der Body ausgeführt wird (wenn der Body nicht leer ist, wie in Ihrem Beispiel). – Christophe
Können Sie mir erklären, wie das hier funktioniert https://github.com/supremacey/cpp-hans/blob/master/lab/lab11/code/surface.h – gamernoob
Dies ist der Ort, wo Sie Ihre Methodenstruktur setzen, also etwas, was diese Methode tun soll. – tilz0R
Aber wenn ich nichts mache, isnide {} wie wird das funktionieren? – gamernoob
Dann wird Ihre Methode * nichts * tun. Sie haben irreführend wegen 'ref {s.ref-> clone()}', da dies eine Art der Erweiterungsmethode ist. Dieser Teil ist keine tatsächliche Struktur dieser Methode – tilz0R