Ich habe unter vier Augen eine Frage gestellt, was das bedeutet. Eilte auf das Forum, um es zu beantworten, da ich ein nützliches Beispiel gefunden habe, das Klarheit bringt.
Übrigens, wenn Sie Englisch sprechen, ist es sehr nützlich, solche Fragen auf Englisch zu googeln, nicht in MQL, sondern in C++. Z.B. so
http://www.google.com/search?q=const+in+c%2B%2B+nach+Funktion&oq=const+in+c%2B%2B&sourceid=chrome&ie=UTF-8
Es wird viele Links zu reinen Programmierforen geben, und C++ ist MQL sehr ähnlich.
Ich habe die Kommentare ins Russische übersetzt und einige Anpassungen für die MQL-Kompatibilität vorgenommen. Ich hänge das Skript unten an, kompilieren Sie es einfach und alles wird klar.
Bringt die Dokumentation keine Klarheit?
Eine Methode mit dem Modifikatorconst wird als konstant bezeichnet und kann die impliziten Mitglieder ihrer Klasse nicht verändern. Die Deklaration von konstanten Klassenfunktionen und konstanten Parametern wird als const-correctnesscontrol bezeichnet. Mit dieser Kontrolle können Sie sicher sein, dass der Compiler unveränderte Werte von Objekten im Auge behält und im Falle eines Verstoßes bei der Kompilierung einen Fehler erzeugt.
Derconst-Modifikator sollte nach der Liste der Argumente innerhalb der Klassendeklaration platziert werden. Definitionen außerhalb einer Klasse sollten ebenfalls den Modifikatorconst enthalten:
Ein zusätzliches Argument für die Verwendung der Integritätskontrolle ist, dass der Compiler spezielle Optimierungen vornimmt, z. B. indem er ein persistentes Objekt in den Nur-Lese-Speicherstellt.
Einestatische Funktion kann nicht mit dem Modifikatorconstdefiniert werden, da dieser Modifikator garantiert, dass die Mitglieder der Instanz unverändert bleiben, wenn eine solche Funktion aufgerufen wird. Aber, wie bereits erwähnt, kann eine statische Funktion per Definition nicht auf nicht-statische Klassenmitglieder zugreifen.
https://www.mql5.com/ru/docs/basis/oop/staticmembers
Außerdem haben Sie meiner Meinung nach nicht das gelungenste Beispiel für den Aufbau einer Struktur präsentiert (erst Methoden, dann Mitgliederdaten). Außerdem ist es besser, alles in eine Klasse statt in eine Struktur zu verpacken, da Strukturen in der Regel als eine Vereinigung von Daten (ohne Methoden) verwendet werden.
![Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Статические члены класса Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Статические члены класса](/i/community/logo_mql5_small.png)
- www.mql5.com
Bringt die Dokumentation keine Klarheit?
https://www.mql5.com/ru/docs/basis/oop/staticmembers
Und meiner Meinung nach haben Sie nicht das beste Beispiel für den Aufbau einer Struktur geliefert (zuerst Methoden, dann Mitgliedsdaten). Außerdem ist es besser, alles in eine Klasse statt in eine Struktur zu verpacken, da Strukturen in der Regel als eine Vereinigung von Daten (ohne Methoden) verwendet werden.
Enthält
Ich erinnerte mich, dass es irgendwo in einem Dokument stand, aber ich konnte es nicht finden. Ich habe ein Beispiel von stackoverflow kopiert. Wo die Daten abgelegt werden, ist eine persönliche Angelegenheit des Programmierers, obwohl ich sie selbst an den Anfang gestellt habe. Ob man Strukturen oder Klassen verwendet, ist eine persönliche Angelegenheit des Programmierers )))
Eingabe von
Ich erinnerte mich daran, dass es irgendwo in der Dokumentation stand, aber ich konnte es nicht finden. Ich habe ein kurzes Beispiel von Stackoverflow gestohlen. Es bleibt dem Programmierer überlassen, wo er die Daten einfügt, ich selbst habe sie an den Anfang gestellt. Ob man Strukturen oder Klassen verwendet, bleibt dem Programmierer überlassen ))))
Man kann über viele Dinge auf diese Weise "eine Privatangelegenheit" sagen. Aber Sie sind derjenige, der es jemandem erklärt, und zwar nicht persönlich, sondern öffentlich. Und Ihre "Privatangelegenheit" widerspricht einem guten Programmierstil. Und die Person, der Sie es erklären, und viele andere Benutzer können es für einen guten Stil halten, was es nicht ist.
Und über die Person, die den Kurs hier gewollt (oder vielleicht geleitet) hat, sagt ein solches "Bloop, bloop, bloop" eine Menge aus.
Welche Mitglieder sind explizit, welche sind implizit?
In diesem Zusammenhang sind dies offenbar die Mitglieder, die die Methode aufrufen. Andernfalls handelt es sich um die Mitglieder, auf die von der Methode aus über diese zugegriffen werden kann.
In C++ bedeutet dies, dass eine Methode keine Klassenmitglieder ändern kann, mit Ausnahme der für veränderbar erklärten Mitglieder.
Da man dies in MQL kaum erwarten kann, bedeutet dies, dass eine Methode ein Objekt prinzipiell nicht verändern kann.
In C++ bedeutet dies, dass eine Methode keine Klassenmitglieder ändern kann, mit Ausnahme der für veränderbar erklärten Mitglieder.
Da man dies in MQL kaum erwarten kann, bedeutet dies, dass eine Methode ein Objekt prinzipiell nicht verändern kann.
Eine konstante Methode kann nicht nur das Objekt ändern, das sie aufgerufen hat.
Ist das ein Tippfehler?
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Eine Frage unter vier Augen gestellt, was bedeutet das? Ich habe im Forum ein hilfreiches Beispiel gefunden, das dies verdeutlicht.
Übrigens, wenn Sie Englisch sprechen, ist es sehr nützlich, solche Fragen auf Englisch zu googeln, nicht in MQL, sondern in C++. Z.B. so
http://www.google.com/search?q=const+in+c%2B%2B+nach+Funktion&oq=const+in+c%2B%2B&sourceid=chrome&ie=UTF-8
Es wird viele Links zu reinen Programmierforen geben, und C++ ist MQL sehr ähnlich.
Ich habe die Kommentare ins Russische übersetzt und einige Anpassungen für die MQL-Kompatibilität vorgenommen. Ich hänge das Skript unten an, kompilieren Sie es, und alles wird klar werden.