Fehler, Irrtümer, Fragen - Seite 1055
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Finden Sie servicedesk in Ihrem Profil.
Hier liegt kein Widerspruch vor, denn sonst hätte B Zugang zu C.t, wie unten dargestellt, während B nicht von C abgeleitet ist
In Ihrem Beispiel sollte B Zugang zu C.t haben, und ich sehe keinen Grund, dies zu verbieten.
Ihr seid beide seltsam. Ihr verwechselt Klassen und Instanzen. Ich denke nicht, dass eine andere Instanz der gleichen Klasse B auch Zugang zu t haben sollte.
Geschützte Felder sollten nur von der eigenen (der gleichen B-Instanz, d.h. dieser) zugänglich sein, und andere Instanzen (sogar von der gleichen B-Klasse) sollten geschlossen sein... Lassen Sie es mich hier der Klarheit halber umbenennen:
D.h. für mich - beide Funktionen sollten nicht kompiliert werden, nicht nur die erste. Wenn in C++ die zweite kompiliert und funktioniert - dann ist es eine C++-Panne, keine Tugend.
Kurz gesagt:
Ihr Vergleich mit der Brieftasche ist falsch.
Ich kann Ihnen ein Beispiel nennen, bei dem Sie Zugang zu geschützten Mitgliedern benötigen, aber es geht nicht um meine oder Ihre Präferenzen.
Wenn der Programmierer etwas verbieten will, kann er es selbst tun und der Compiler muss es verbieten,
wenn es das Programm beeinträchtigen könnte.
Im obigen Beispiel weiß Klasse B über Klasse A Bescheid, so dass sie dort nichts durcheinander bringen wird.
Und wenn Sie es nicht zulassen wollen, stellen Sie es in den Abschnitt Private, oder erben Sie nicht von einer Klasse, oder denken Sie an tausend andere Möglichkeiten.
D.h. für mich - beide Funktionen sollten nicht kompiliert werden, nicht nur die erste. Wenn in C++ die zweite kompiliert und funktioniert - ist das ein Fehler in C++, keine Tugend.
Dann würde auch nicht auf die Brieftasche zugegriffen werden
Noch einmal: Unterscheiden Sie sorgfältig zwischen Klassen (Typen) und Instanzen (Variablen). Eigene (diese) geschützte Felder sind frei zugänglich, auch durch Vererbung (im Gegensatz zu privat), andere (andere Variablen der gleichen Klasse) dürfen nicht zugänglich sein. (sollte unzugänglich sein)
.....
Im obigen Beispiel weiß Klasse B über Klasse A Bescheid, so dass sie dort nichts durcheinander bringen wird.
...............
Nur weil ich weiß, dass Sie eine Brieftasche haben, ist das kein Grund, auf sie zuzugreifen. Auf Ihre bitte nur über get() und set() - wenn Sie es erlauben (public: int get(); int set();).
Nur weil ich weiß , dass Sie eine Brieftasche haben, ist das kein Grund, darauf zuzugreifen. Auf Ihre - bitte. Auf Ihre - nur durch get() und set() - wenn Sie es erlauben (public: int get(); int set();).
Die Brieftasche ist nur ein Sonderfall. Und niemand hindert sie daran, in den privaten Bereich zu gelangen.
In einem anderen Fall müssen Sie vielleicht auf die Variable der Elternklasse eines anderen Objekts zugreifen.
Und es liegt im Ermessen des Programmierers, ob er dies zulässt oder nicht. Und der Compiler muss sicherstellen, dass das Programm korrekt funktioniert.
Ich habe ein Beispiel für einen Widerspruch gegeben ... das Objekt ist dasselbe
Das ist kein Widerspruch. Wenn Sie sich durch eine "externe Schnittstelle" auf sich selbst beziehen, machen Sie sich darauf gefasst, von Ihnen selbst ins Gesicht geschlagen zu werden ;)
..........., da es zum Zeitpunkt der Kompilierung keine Informationen über die Objekte hat.
1. Die Brieftasche ist nur ein Sonderfall. Und niemand hindert sie daran, in den privaten Bereich zu gelangen.
2. In einem anderen Fall müssen Sie vielleicht auf die Variable der Elternklasse eines anderen Objekts zugreifen.
3 Und es ist Sache des Programmierers, zu entscheiden, ob er dies zulässt oder nicht.
4. und es ist Aufgabe des Compilers, dafür zu sorgen, dass das Programm korrekt funktioniert.
1. Das Einfügen in den privaten Bereich ändert nichts an der Tatsache, dass
Es wird sich vererben, das ist klar.
2. Es gibt nur sehr wenige Dinge, die getan werden müssen. Gründe sind nur verfügbar, wenn Sie auf Ihr eigenes Exemplar zugreifen.
3. Lassen Sie ihn entscheiden. richtig. ;)
4. Das ist die ganze Frage: Was genau gilt als "korrekte Arbeit"?