logo

Differenza tra C e C++

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++