Somiglianze tra C E C++ Sono:
- Entrambe le lingue hanno una sintassi simile.
- La struttura del codice di entrambe le lingue è la stessa.
- La compilazione di entrambe le lingue è simile.
- Condividono la stessa sintassi di base. Quasi tutti gli operatori e le parole chiave del C sono presenti anche in C++ e fanno la stessa cosa.
- Il C++ ha una grammatica leggermente estesa rispetto al C, ma la grammatica di base è la stessa.
- Il modello di memoria di base di entrambi è molto vicino all'hardware.
- Le stesse nozioni di stack, heap, ambito file e variabili statiche sono presenti in entrambi i linguaggi.

Differenze tra C E C++ Sono:
C++ è spesso visto come un superset di C. C++ è anche conosciuto come C con classe Ciò era quasi vero quando C++ fu originariamente creato, ma i due linguaggi si sono evoluti nel tempo con C che ha acquisito una serie di funzionalità che non erano non si trova nella versione contemporanea di C++ o non è ancora entrato in nessuna versione di C++. Detto questo, il C++ è ancora principalmente un superset di aggiunte di C Programmazione orientata agli oggetti , La gestione delle eccezioni , Modelli e una libreria standard più ampia.
Di seguito è riportata una tabella con alcune delle differenze più evidenti e generali tra C e C++. Ci sono molte differenze più sottili tra le lingue e tra le versioni delle lingue.
| C | C++ |
|---|---|
| C è stato sviluppato da Dennis Ritchie tra il 1969 e il 1973 presso AT&T Bell Labs. | Il C++ è stato sviluppato da Bjarne Stroustrup nel 1979. |
| C non supporta il polimorfismo, l'incapsulamento e l'ereditarietà, il che significa che non supporta la programmazione orientata agli oggetti. | Supporta C++ polimorfismo , incapsulamento , E eredità perché è un linguaggio di programmazione orientato agli oggetti. |
| C è (principalmente) un sottoinsieme di C++. | Il C++ è (principalmente) un superset del C. |
| Numero di parole chiave in C: * C90: 32 *C99:37 *C11:44 * C23: 59 | Numero di parole chiave in C++: *C++98:63 *C++11:73 *C++17:73 *C++20:81 |
| Per lo sviluppo del codice, C supporta programmazione procedurale . | Il C++ è noto come linguaggio ibrido perché C++ supporta entrambi procedurale E Paradigmi di programmazione orientata agli oggetti . |
| Dati e funzioni sono separati in C perché è un linguaggio di programmazione procedurale. | Dati e funzioni sono incapsulati insieme sotto forma di un oggetto in C++. |
| C non supporta l'occultamento delle informazioni. | I dati vengono nascosti dall'incapsulamento per garantire che le strutture dei dati e gli operatori vengano utilizzati come previsto. |
| I tipi di dati incorporati sono supportati in C. | I tipi di dati incorporati e definiti dall'utente sono supportati in C++. |
| C è un linguaggio basato su funzioni perché C è un linguaggio di programmazione procedurale. | C++ è un linguaggio basato sugli oggetti perché è una programmazione orientata agli oggetti. |
| L'overload di funzioni e operatori non è supportato in C. | L'overload di funzioni e operatori è supportato da C++. |
| Il C è un linguaggio basato sulle funzioni. | C++ è un linguaggio basato sugli oggetti |
| Le funzioni in C non sono definite all'interno delle strutture. | Le funzioni possono essere utilizzate all'interno di una struttura in C++. |
| Le funzionalità dello spazio dei nomi non sono presenti all'interno del C. | Spazio dei nomi è utilizzato da C++, che evita collisioni di nomi. |
| L'intestazione IO standard è stdio.h . | L'intestazione IO standard è iostream.h . |
| Le variabili di riferimento non sono supportate da C. | Le variabili di riferimento sono supportate da C++. |
| Le funzioni virtuali e di amicizia non sono supportate da C. | Virtuale E funzioni dell'amico sono supportati da C++. |
| C non supporta l'ereditarietà. | Il C++ supporta l'ereditarietà. |
| Invece di concentrarsi sui dati, il C si concentra sul metodo o sul processo. | Il C++ si concentra sui dati invece che sul metodo o sulla procedura. |
| C fornisce malloc() E calloc() funzioni per allocazione dinamica della memoria , E gratuito() per la deallocazione della memoria. | Il C++ fornisce nuovo operatore per l'allocazione della memoria e operatore cancella per la deallocazione della memoria. |
| Il supporto diretto per la gestione delle eccezioni non è supportato da C. | La gestione delle eccezioni è supportato da C++. |
| scanf() e le funzioni printf() vengono utilizzate per l'input/output in C. | cin e cout sono usati per input/output in C++ . |
| Le strutture C non hanno modificatori di accesso. | Le strutture C++ hanno modificatori di accesso. |
| Non esiste un controllo rigoroso del tipo nel linguaggio di programmazione C. | Controllo rigoroso del tipo eseguito in C++. Così tanti programmi che funzionano bene nel compilatore C genereranno molti avvisi ed errori nel compilatore C++. |
| C non supporta l'overload | C++ supporta l'overloading |
| È consentito il gioco di parole con i sindacati (C99 e versioni successive) | Il gioco di parole con i sindacati è un comportamento indefinito (tranne in circostanze molto specifiche) |
| Gli inizializzatori con nome potrebbero apparire fuori ordine | Gli inizializzatori denominati devono corrispondere al layout dei dati della struttura |
| L'estensione del file è .c | L'estensione del file è .cpp o .c++ o .cc o .cxx |
| Metaprogrammazione: macro + _Generic() | Metaprogrammazione: modelli (le macro sono ancora supportate ma sconsigliate) |
| Ci sono 32 parole chiave nel C | Ci sono 97 parole chiave nel C++ |