Warum sind Datenelemente in C ++ standardmäßig privat?

7

Gibt es einen bestimmten Grund, dass alle Datenelemente in einer Klasse in C ++ standardmäßig privat sind?

?

    
Naga 28.03.2010, 06:37
quelle

5 Antworten

15

Weil es besser ist, ordnungsgemäß gekapselt zu sein und nur die Dinge zu öffnen, die benötigt werden, im Gegensatz dazu, dass alles standardmäßig geöffnet ist und es geschlossen werden muss.

Die Kapselung (das Ausblenden von Informationen) ist eine gute Sache und, wie die Sicherheit (z. B. das Sperren von Netzwerkdiensten), sollte der Standardwert eher gut als schlecht sein.

    
paxdiablo 28.03.2010, 06:42
quelle
17

Das Design und die Entwicklung von C ++

2.10 Das Schutzmodell

  

Vor Beginn der Arbeit an C mit   Klassen, ich arbeitete mit dem Betrieb   Systeme. Die Begriffe des Schutzes   aus dem Cambridge CAP Computer und   ähnliche Systeme - und keine Arbeit   in Programmiersprachen - inspiriert   die C ++ - Schutzmechanismen. Das   Klasse ist die Einheit des Schutzes und der   Grundregel ist, dass Sie nicht können   Gewähren Sie sich Zugang zu einer Klasse; nur   die in der Klasse platzierten Deklarationen   Erklärung (angeblich von seinem Besitzer)   kann Zugriff gewähren. Standardmäßig alle   Informationen sind privat.

    
Nick Dandoulakis 28.03.2010 06:59
quelle
6

Weil es ansonsten überhaupt keinen Unterschied zwischen class und struct geben würde?

    
Ben Voigt 20.04.2010 04:57
quelle
3

Die Begründung lautet, dass die öffentlichen Teile einer Klasse explizit veröffentlicht werden sollten.

Das Interessante daran (für mich sowieso) ist, dass die erste Zeile nach der öffnenden Klammer vieler, vieler Klassendefinitionen public: ist. Die meisten Leser einer Klasse sind an den öffentlichen Bits interessiert, da sie damit interagieren, und so viele Klassendefinitionen haben ihre öffentlichen Bits sowieso zuerst.

C ++ 's Zugriffsbezeichner gelten für den Bereich, der ihnen folgt - Ich denke, Java und C #' s Technik, jedes Mitglied die Sichtbarkeit des Mitglieds (mit einem vernünftigen Standard) zu spezifizieren, ist vorzuziehen.

    
Michael Burr 28.03.2010 06:56
quelle
2

Mit einem Wort, Verkapselung. Das Ziel besteht darin, private Implementierungsdetails (z. B. Datenelemente) privat zu halten. Nur explizit öffentliche API wird Clients der Klasse zur Verfügung gestellt.

    
Barry Wark 28.03.2010 06:41
quelle

Tags und Links