Domanda

In C++, perché la visibilità predefinita è privata per i membri delle classi, ma pubblica per le strutture?

È stato utile?

Soluzione

Il C++ è stato introdotto come superset del C.Le strutture furono trasferite dal C, dove la semantica dei loro membri era quella di public.Esiste un sacco di codice C, incluse le librerie che si desiderava funzionino anche con C++, che utilizzano struct.Le classi sono state introdotte in C++ e, per conformarsi alla filosofia di incapsulamento OO, i loro membri sono privati ​​per impostazione predefinita.

Altri suggerimenti

Poiché una classe è un modo normale di eseguire l'orientamento agli oggetti, il che significa che le variabili membro dovrebbero essere private e avere funzioni di accesso pubbliche: questo è utile per creare accoppiamento basso.Le strutture, d'altro canto, devono essere compatibili con le strutture C, che sono sempre pubbliche (non esiste la nozione di pubblico e privato in C) e non utilizzano accessori/mutatori.

Probabilmente per la compatibilità con le strutture C. In questo modo i le strutture dichiarati nel codice C continueranno a lavorare nello stesso modo quando viene utilizzato in codice C ++.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top