C ++ è stato inventato per gestire la complessità che C non poteva gestire.
Ad esempio, un problema comune con C è che potresti "esaurire i nomi per variabili" (non per essere preso alla lettera, ovviamente) perché non c'erano incapsulamenti, spazi dei nomi ecc.
Inoltre, C non ha eccezioni, quindi la gestione degli errori è molto soggetta ad errori, poiché dipende dalla libreria controllare sempre i valori restituiti da funcs, mentre con le eccezioni, lo sviluppatore della libreria lancia semplicemente un'eccezione che garantisce che il flusso del programma essere fermato.
C ++ aiuta ad avere gli oggetti init del costruttore che vengono automaticamente chiamati dal compilatore. A differenza delle strutture C che devono essere inizializzate dal programmatore (quindi un'altra area soggetta a errori).
Infine, vi sono molti altri vantaggi propagandati da OOP, come il riutilizzo degli oggetti e i concetti generici di programmazione, come i modelli e i generici che consentono di riutilizzare il codice sorgente, ecc.
E molte altre cose che richiederebbero troppo del mio tempo per elencarle qui.