Contrariamente alla risposta di whatsisname , mi sembra di pensare che l'occultamento delle informazioni tenti di non rendere utenti di un class consapevole della sua implementazione e quindi non fare assunzioni basate sull'attuale implementazione, perché idealmente questo potrebbe cambiare senza influenzare il codice utente. Detto questo, C ++ è davvero pessimo per quanto riguarda l'occultamento delle informazioni, perché gli utenti di una classe possono vedere le sue parti private. (Punito non intenzionale, ma notato.)
Come tante cose su C ++, questo è un sacrificio per le prestazioni e la retrocompatibilità: per avere oggetti basati su stack, il compilatore deve conoscere la dimensione di tali oggetti in fase di compilazione. Dato il modello di compilazione di C, questo richiede che le informazioni siano accessibili attraverso la definizione della classe.
Puoi aggirare il problema nascondendo le implementazioni dietro le classi di base polimorfiche o impiegando l'idioma dei brufoli. Ciò richiederà costi di runtime aggiuntivi, ma è quello che serve. Se C ++ avesse implementato il nascondiglio completo delle informazioni, avresti sempre pagato tutto questo.