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
Technische Referenz. Ein Beispiel für einen "Wrapping-Mechanismus" bei der Arbeit mit Klassen (damit Sie nicht danach suchen müssen):
https://www.mql5.com/ru/forum/3555/page3#comment_57315
Frage. Der neue Betreiber. Im Referenzhandbuch heißt es, dass new ein Operator ist; in den Beispielen wird jedoch häufig nach der Verwendung dieses Operators geprüft, ob er gleich NULL ist. Zum Beispiel:
Es wird auch gesagt, dass"NULL mit Zeigern auf Objekte verglichen werden kann, die mit dem new-Operator erstellt wurden".
Es stellt sich also heraus, dass der neue Operator nicht immer ein neues Objekt erzeugt? Oder ist die Überprüfung der Gleichheit eines erstellten Objekts mit NULL eine Besonderheit des Stils eines Entwicklers und nicht obligatorisch?
Frage. Der neue Betreiber. Im Referenzhandbuch heißt es, dass new ein Operator ist; in den Beispielen wird jedoch häufig nach der Verwendung dieses Operators geprüft, ob er gleich NULL ist. Zum Beispiel:
Es wird auch gesagt, dass"NULL mit Zeigern auf Objekte verglichen werden kann, die mit dem new-Operator erstellt wurden".
Es stellt sich also heraus, dass der neue Operator nicht immer ein neues Objekt erzeugt? Oder ist die Überprüfung der Gleichheit eines erstellten Objekts mit NULL eine Besonderheit des Stils eines Entwicklers und nicht obligatorisch?
Wenn Sie ein dynamisches Objekt an einer Stelle in einem Programm erstellen, ist es logisch, dass Sie es an einer anderen Stelle wieder zerstören, und es ist nicht sicher, dass dies alles innerhalb einer Funktion geschieht, so dass eine einfache Regel darin besteht, vor der Verwendung eines Zeigers zu prüfen, ob es existiert.
Das ist richtig. In den Beispielen im Referenzhandbuch erfolgt die Prüfung jedoch unmittelbar nach der Erstellung des Objekts, d.h. an einer Stelle im Programm und innerhalb einer Funktion. Und die hier angegebene Regel ist nicht ganz zutreffend. Warum sollte die Prüfung direkt nach der Erstellung eines Objekts durchgeführt werden?Es stellt sich also heraus, dass der neue Operator nicht immer ein neues Objekt erzeugt? =(Ich wiederhole)=
Hier ist ein weiteres Beispiel unter vielen:
Das ist richtig. In den Beispielen im Referenzhandbuch wird die Prüfung jedoch unmittelbar nach der Erstellung des Objekts durchgeführt, d.h. an einer Stelle im Programm und innerhalb einer Funktion. Und die oben genannte Regel ist hier nicht anwendbar. Warum sollte die Prüfung gleich nach der Erstellung des Objekts durchgeführt werden?Es stellt sich also heraus, dass der neue Operator nicht immer ein neues Objekt erzeugt (ich wiederhole das)?
Hier ist ein weiteres Beispiel unter vielen:
Es gibt eine solche Möglichkeit. In der Referenz, der erste Absatz.
GUT. Es stellt sich heraus, dass das Verhalten des Operators das einer Funktion ist. Sie kann erstellt werden, muss aber nicht.
Zum Beispiel war nicht genügend Speicherplatz für ein Objekt vorhanden.
Frage. Wenn eine virtuelle Funktion mit einem bestimmten Satz von Parametern und Typen in einer übergeordneten Klasse deklariert ist, können dann die Anzahl und die Typen der Parameter der entsprechenden virtuellen Funktionen in den abgeleiteten Klassen geändert werden?
Einerseits heißt es im Referenzhandbuch, dass "eine virtuelle Funktion in einer abgeleiteten Klasse ersetzt werden kann. Die Entscheidung, welche Funktionsdefinition für die virtuelle Funktion aufgerufen werden soll, wird dynamisch (zur Laufzeit) getroffen. Ein typischer Fall ist, wenn eine Basisklasse eine Funktion enthält und abgeleitete Klassen ihre eigenen Versionen dieser Funktion haben". Andererseits beziehen sich die im Referenzhandbuch angeführten Beispiele auf Fälle, in denen virtuelle Funktionen unterschiedliche Funktionsdefinitionskörper und nicht Funktionsdefinitionsköpfe haben.
Frage. Ist es nach der Deklaration einer virtuellen Funktion mit einem bestimmten Satz von Parametern und deren Typen in einer übergeordneten Klasse möglich, die Anzahl und die Typen der Parameter der entsprechenden virtuellen Funktionen in den untergeordneten Klassen zu ändern?