3 Stimmen

Neben dem Konstruktor deklarierte Eigenschaften

Ich bin sehr neu in C/C++ und nicht sicher, wie die Methode heißt. Aber deshalb bin ich hier, um die Antwort zu finden. Ich zeige Ihnen ein Beispiel

MyClass::MyClass() : valueOne(1), valueTwo(2)
{
      //code
}

Wenn valueOne und valueTwo Klasseneigenschaften sind, denen Werte außerhalb des Körpers zugewiesen werden, welche Methode wird dann aufgerufen und warum wird das so gemacht. Warum wird es nicht so gemacht

MyClass::MyClass()
{
      valueOne = 1;
      valueTwo = 2
      //code
}

Wenn mir jemand helfen kann, wäre das großartig.

7voto

Brian R. Bondy Punkte 325712

Das ist ein Initialisierungsliste . Sie können Ihre Mitgliedsvariablen mit einer Initialisierungsliste nach dem Konstruktor initialisieren.

Standardmäßig erstellt der Konstruktor automatisch die Objekte, die Mitgliedsvariablen sind, indem er ihre Standardkonstruktoren aufruft. Durch Verwendung einer Initialisierungsliste können Sie angeben, dass andere Konstruktoren verwendet werden sollen. Manchmal, wenn Ihre Mitgliedsvariable keinen Konstruktor ohne Argument hat, müssen Sie eine Initialisierungsliste verwenden.

2voto

Dan Head Punkte 2492

Initialisierungslisten (die frühere Form) werden in der Regel aus Gründen der Effizienz und Leistung bevorzugt. Ich persönlich bevorzuge sie auch aus Gründen der Lesbarkeit des Codes, da sie die einfache Initialisierung von jeder komplexen Logik im Konstruktor selbst trennen.

1voto

David Punkte 6841

Dies wird als Initialisierungsliste . Dies geschieht hauptsächlich aus Gründen der Leistung (bei größeren Objekten) oder der Konsistenz (bei eingebauten Typen wie int ).

1voto

Eddy Pronk Punkte 6269

Es ist vorzuziehen, Mitglieder in der Initialisierungsliste zu initialisieren. In Ihrem Fall spielt es keine Rolle, aber es ist nicht möglich, ein int& so zu initialisieren, wie Sie es im zweiten Codefragment getan haben. Dies ist die einzige Stelle, an der Sie auch Argumente an den Konstruktor Ihrer Basisklasse übergeben können.

0voto

Chris K Punkte 11536

Beachten Sie auch, dass die ce Zeiger ist nur dann in der Initialisierungsliste zugänglich, wenn er verwendet wird, um Datenfelder oder Mitgliedsfunktionen in den BASE-Klassen zu referenzieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X