Fehler, Irrtümer, Fragen - Seite 1057
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
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.
Das ist der springende Punkt: Wenn dieser ganz andere Fall bei Ihnen eintritt, bedeutet das, dass Ihre Architektur konzeptionell falsch und potenziell gefährlich ist.
In C++ wurde das Konzept der so genannten freundlichen Klassen irgendwann auf unglückliche Weise eingeführt. Wenn eine Klasse weiß, wie eine andere Klasse organisiert ist, kann sie sicher mit deren internen Daten arbeiten. Die Praxis der Verwendung durch Tausende von Programmierern auf der ganzen Welt hat gezeigt, dass es eine gefährliche Sache ist, die mehr Probleme schafft, als sie zu lösen, so dass es in modernen Sprachen wie Java und C# aufgegeben wird.
Diese Funktion war eine unangenehme Überraschung. Es ist definitiv Blödsinn, wenn der Compiler es erlaubt, das private Feld einer fremden Instanz zu ändern. Wir sollten es an den Service Desk weiterleiten.
Ich verstehe nicht: Warum wollen Sie sich so sehr einschränken?
Glauben Sie, dass Ihr Programm dadurch automatisch sicherer wird?
Das wird es nicht! Im Gegenteil.
Es sind die unnötigen Einschränkungen, die Sie eines Tages dazu bringen werden, es so zu schreiben:
Sie wissen ein oder zwei Dinge über OOP, aber Sie verstehen es noch nicht.
Sehen Sie:
Ist es verwunderlich, dass ich die Variable "Brieftasche" geschlossen habe, obwohl die ursprüngliche Idee der Klasse darin besteht, ihre Brieftasche für alle zugänglich zu machen? Aber wenn jeder so viel nimmt, wie er will, verlieren wir Geld, und das ist unmöglich. Die Funktion GetMoney erlaubt es jetzt, aber nachdem ich ein paar Zeilen hinzugefügt habe, kann ich kein Geld mehr abheben. Stellen Sie sich nun vor, dass die Klasse Maecenas von Dutzenden verschiedener Objekte angesprochen wird, die um Geld bitten. Wenn die Brieftaschenvariable geöffnet wird, müsste jedes dieser Objekte auch kontrollieren (d.h. eine eigene Implementierung haben), ob es genug Geld hat. Und wenn mindestens einer von ihnen dies nicht tut, riskiert er, einen negativen Wert anstelle von Null zu erhalten, was bedeuten würde, dass er um Geld gebeten hat und am Ende auch Geld schuldet.Kumpel, ich sehe, du weißt ein oder zwei Dinge über OOP, aber du hast noch nicht den Kern der Sache verstanden.
Sehen Sie:
Ist es verwunderlich, dass ich die Variable "Geldbörse" geschlossen habe, obwohl die ursprüngliche Idee der Klasse darin besteht, die Geldbörse für alle zugänglich zu machen? Aber wenn jeder so viel nimmt, wie er will, verlieren wir Geld, und das ist unmöglich. Die Funktion GetMoney erlaubt es jetzt, aber nachdem ich mehrere Zeilen hinzugefügt habe, kann ich kein Geld mehr abheben. Stellen Sie sich nun vor, dass die Klasse Maecenas von Dutzenden verschiedener Objekte angesprochen wird, die um Geld bitten. Wenn die Brieftaschenvariable geöffnet wird, müsste jedes dieser Objekte auch kontrollieren (d.h. eine eigene Implementierung haben), ob es genug Geld hat. Und wenn mindestens einer von ihnen dies nicht tut, besteht die Gefahr, dass er einen negativen Wert anstelle von Null erhält, was bedeuten würde, dass er um Geld gebeten hat und am Ende auch noch Geld schuldet.Ich hatte nichts gegen die private Brieftasche. Das Gespräch begann wie folgt:https://www.mql5.com/ru/forum/1111/page1072#comment_589657
Das ist richtig. Die Klasse B greift auf die externe Klasse A zu und möchte, dass geschützte Variablen der Klasse A für sie verfügbar sind. Ich verstehe die Logik hier nicht.
Was hat die Logik damit zu tun?
http://alenacpp.blogspot.com/2006/03/blog-post_11.html
Der geschützte Modifikator ist eine Hure. Selten wird sie wirklich benötigt.
Echte Verkapselung bedeutet Datenschutz.
Können Sie mir sagen, ob Sie das erste Zeichen in pos auswählen wollen - soll ich 1 oder 0 in pos eingeben? Ist sie wie bei Arrays indiziert?
Können Sie mir sagen, ob Sie das erste Zeichen in pos auswählen wollen - soll ich 1 oder 0 in pos eingeben? Ist sie wie bei Arrays indiziert?