Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Der new-Operator erzeugt eine Instanz der Klasse und ein Konstruktor wird in Verbindung mit ihm aufgerufen. Sie ist in der Syntax festgeschrieben, so dass es keine andere Möglichkeit gibt, sie aufzurufen.
Ich bin von diesem Beispiel ausgegangen:
Grob gesagt, gibt es hier keine Klammern (Konstruktoraufruf). Es ist möglich, dass ich noch etwas übersehen habe.Dieser Code unterscheidet sich fast nicht von der Mehrfachvererbung.
In der Tat hat die Klasse C_C über entsprechende Zeiger Zugriff auf die Daten von C_A und C_B.Ich habe mich an diesem Beispiel orientiert:
Hier gibt es, grob gesagt, keine Klammern (Aufruf des Konstruktors). Es ist möglich, dass ich etwas noch nicht verstanden habe.Warum ich, es ist nicht für mich, es ist für die Zentralwäscherei, ich habe keine Klammern benutzt :o)
Mein Compiler beschwert sich nicht über fehlende Klammern...
Wie auch immer, es stellte sich plötzlich die Frage, wie man es richtig macht. Oder macht es keinen Unterschied, ob es Klammern gibt oder nicht?
Mein Compiler beschwert sich nicht über fehlende Klammern...
Wie dem auch sei, plötzlich stellte sich die Frage: Was ist der richtige Weg? Oder macht es keinen Unterschied, ob es Klammern gibt oder nicht?
Wenn es in beide Richtungen funktioniert, ist es eher eine Frage der Vereinheitlichung der Syntax. Die Hauptsache ist, dass die Geschwindigkeit nicht beeinträchtigt wird.
ZS Und funktioniert das überhaupt? Ehrlich gesagt habe ich das nicht überprüft, ich schreibe immer mit Klammern.
Wenn es in beide Richtungen funktioniert, ist es eher eine Frage der Vereinheitlichung der Syntax. Die Hauptsache ist, dass die Geschwindigkeit nicht beeinträchtigt wird.
ZS Funktioniert das überhaupt? Um ehrlich zu sein, habe ich es nicht überprüft, ich schreibe immer mit Klammern.
Ich habe die Beschreibung der dynamischen Erstellung von Klassenobjekten in MQL5 nicht gelesen, aber in C++ kann man dies ohne Klammern (der Standardkonstruktor wird aufgerufen) und mit Klammern (der Konstruktor wird abhängig von den Parametern in den Klammern aufgerufen) tun. Beispiel:
class CExample
{
int param;
public:
CExample();
CExample(int x);
~CExample();
}
CExample::CExample(int x)
{
param = x;
}
//..........вызов..............
//..где-то в тексте программы..
CExample *ex1 = new CExample; //создание с конструктором CExample();
CExample *ex1 = new CExample(); //создание с конструктором CExample();
CExample *ex1 = new CExample(value); //создание с конструктором CExample(int x);
In mql5 können noch keine Parameter an den Konstruktor übergeben werden.
Ich habe die Beschreibung der dynamischen Erstellung von Klassenobjekten in MQL5 nicht gelesen, aber in C++ kann man dies ohne Klammern (der Standardkonstruktor wird aufgerufen) und mit Klammern (der Konstruktor wird abhängig von den Parametern in den Klammern aufgerufen) tun. Beispiel:
Verstanden, danke für die einfache und direkte Erklärung. Es stellt sich heraus, dass die Klammern für mögliche Parameter stehen.
Und die Beschreibung, wie man dynamische Klassenobjekte in MQL5 erstellt, ist sehr knapp gehalten:
MQL5 Referenz / Grundlagen der Sprache / Operatoren / Objekterstellungsoperator new
MQL5 Referenz / Sprachgrundlagen / Datentypen / Objektzeiger