371 Stimmen

Was ist der Unterschied zwischen privaten und geschützten Mitgliedern von C++-Klassen?

Was ist der Unterschied zwischen private y protected Mitglieder in C++-Klassen?

Aus den Best-Practice-Konventionen weiß ich, dass Variablen und Funktionen, die nicht außerhalb der Klasse aufgerufen werden, zu private -aber wenn ich mir mein MFC-Projekt ansehe, scheint MFC zu bevorzugen protected .

Was ist der Unterschied und welche sollte ich verwenden?

0 Stimmen

Wenn Sie eine Bibliothek entwerfen, ist jedes geschützte (und nicht private) Mitglied eine Belastung. Wenn Sie bei internen Klassen alles, was nicht öffentlich ist, geschützt machen, sparen Sie Zeit und müssen weniger Klassen überarbeiten, um ein Mitglied von privat in geschützt zu ändern.

0voto

Gayki Punkte 29

Private Mitglied kann nur in der gleichen Klasse zugegriffen werden, wo es deklariert hat, wo als geschützte Mitglied kann in der Klasse zugegriffen werden, wo es zusammen mit den Klassen, die von ihm geerbt werden deklariert ist.

0voto

zerocool Punkte 2966

Les protected Schlüsselwort spezifiziert den Zugriff auf Klassenmitglieder in der Member-Liste bis zum nächsten Zugriffsspezifizierer ( public o private ) oder die Ende der Klassendefinition. Class members erklärt als protected kann nur von den folgenden Personen verwendet werden:

  • Mitgliedsfunktionen der Klasse, die diese Mitglieder ursprünglich deklariert hat.
  • Freunde der Klasse, die diese Mitglieder ursprünglich deklariert hat.
  • Klassen, die mit öffentlichem oder geschütztem Zugriff von der Klasse abgeleitet sind, die diese Mitglieder ursprünglich deklariert hat.
  • Direkte, privat abgeleitete Klassen, die auch privaten Zugriff auf geschützte Mitglieder haben.

Wenn der Name einer Basisklasse vorangestellt wird, wird die protected Stichwort gibt an, dass die öffentlichen und geschützten Mitglieder der Basisklasse geschützte Mitglieder der abgeleiteten Klassen sind.

Geschützte Mitglieder sind nicht so privat wie private Mitglieder, die sind nur für Mitglieder der Klasse zugänglich sind, in der sie deklariert sind, aber sie sind nicht so öffentlich wie öffentliche Mitglieder, die für alle Mitglieder der Klasse zugänglich sind. jeder Funktion zugänglich sind.

Geschützte Mitglieder, die auch als static sind zugänglich für jeder friend oder Mitgliedsfunktion einer abgeleiteten Klasse. Geschützte Mitglieder die nicht als statisch deklariert sind, sind für Freunde und Memberfunktionen Funktionen in einer abgeleiteten Klasse nur über einen Zeiger auf, eine Referenz auf, oder ein Objekt der abgeleiteten Klasse.

geschützt (C++)

0voto

artless noise Punkte 19566

Was ist der Unterschied zwischen privaten und geschützten Mitgliedern in C++-Klassen?

Andere Antworten lauteten:

  • öffentlich - für alle zugänglich.
  • protected - zugänglich für abgeleitete Klassen (und Freunde).
  • privat - eingeschränkt.

Was ist der Unterschied und welche sollte ich verwenden?

Les C++ Kernrichtlinien gibt den Rat, dass Daten immer privat sein sollten. Ich halte dies für einen guten Rat, da es zu einem "Datensalat" führt, wenn Sie abgeleitete Klassen haben, die auf geschützte Daten zugreifen können. Es macht viel mehr Sinn, Funktionen zu schützen, aber das hängt vom Anwendungsfall ab.

Bei den Funktionen haben Sie die Wahl. Für Daten sollten Sie sie privat machen und bei Bedarf geschützte Zugriffsfunktionen bereitstellen. So haben Sie mehr Kontrolle über die Daten der Klasse.

-3voto

Private und protected Zugriffsmodifikatoren sind ein und dasselbe, nur dass auf geschützte Mitglieder der Basisklasse außerhalb des Geltungsbereichs der Basisklasse in der Kind(ab)klasse zugegriffen werden kann. Das gleiche gilt auch für die Vererbung. Mit dem privaten Modifikator hingegen kann auf die Mitglieder der Basisklasse nur im Bereich oder Code der Basisklasse und ihrer Freundesfunktionen zugegriffen werden''''

7 Stimmen

Welchen Mehrwert bietet Ihre Antwort gegenüber den anderen Antworten?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X