2017-06-09 1 views
1

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.

+1

Dies ist der Ort, wo Sie Ihre Methodenstruktur setzen, also etwas, was diese Methode tun soll. – tilz0R

+0

Aber wenn ich nichts mache, isnide {} wie wird das funktionieren? – gamernoob

+0

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

Antwort

2

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.

+0

Also, wenn ich es gut verstehe senden Sie uns zum zweiten Konstruktor, der in einer anderen Struktur sein kann, die davon erbt? – gamernoob

+0

@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

+0

Können Sie mir erklären, wie das hier funktioniert https://github.com/supremacey/cpp-hans/blob/master/lab/lab11/code/surface.h – gamernoob