Asemănări între C și C++ sunt:
- Ambele limbi au o sintaxă similară.
- Structura codului ambelor limbi este aceeași.
- Compilarea ambelor limbi este similară.
- Ei au aceeași sintaxă de bază. Aproape toți operatorii și cuvintele cheie ale lui C sunt, de asemenea, prezenți în C++ și fac același lucru.
- C++ are o gramatică ușor extinsă decât C, dar gramatica de bază este aceeași.
- Modelul de memorie de bază al ambelor este foarte aproape de hardware.
- Aceleași noțiuni de stivă, heap, fișier și variabile statice sunt prezente în ambele limbi.

Diferente intre C și C++ sunt:
C++ este adesea privit ca un superset de C. C++ este cunoscut și ca un C cu clasă. Acest lucru a fost aproape adevărat atunci când C++ a fost creat inițial, dar cele două limbi au evoluat de-a lungul timpului, C cuprinzând o serie de caracteristici care fie erau. nu a fost găsit în versiunea contemporană de C++ sau încă nu a fost inclus în nicio versiune de C++. Acestea fiind spuse, C++ este încă în mare parte un superset de adăugare C Programare orientată pe obiecte , Tratarea excepțiilor , Șabloane și o bibliotecă standard mai extinsă.
Mai jos este un tabel cu unele dintre diferențele mai evidente și mai generale dintre C și C++. Există multe diferențe mai subtile între limbi și între versiunile limbilor.
| C | C++ |
|---|---|
| C a fost dezvoltat de Dennis Ritchie între anii 1969 și 1973 la AT&T Bell Labs. | C++ a fost dezvoltat de Bjarne Stroustrup în 1979. |
| C nu acceptă polimorfismul, încapsularea și moștenirea, ceea ce înseamnă că C nu acceptă programarea orientată pe obiecte. | C++ suportă polimorfism , încapsulare , și moştenire deoarece este un limbaj de programare orientat obiect. |
| C este (în mare parte) un subset al C++. | C++ este (în mare parte) un superset al lui C. |
| Un numar de Cuvinte cheie în C: * C90: 32 * C99: 37 * C11: 44 * C23: 59 | Un numar de Cuvinte cheie în C++: * C++98: 63 * C++11: 73 * C++17: 73 * C++20: 81 |
| Pentru dezvoltarea codului, C acceptă programare procedurală . | C++ este cunoscut ca limbaj hibrid deoarece C++ le acceptă pe ambele procedural și paradigme de programare orientată pe obiecte . |
| Datele și funcțiile sunt separate în C deoarece este un limbaj de programare procedural. | Datele și funcțiile sunt încapsulate împreună sub forma unui obiect în C++. |
| C nu acceptă ascunderea informațiilor. | Datele sunt ascunse de Encapsulation pentru a se asigura că structurile și operatorii de date sunt utilizați conform intenției. |
| Tipurile de date încorporate sunt acceptate în C. | Tipurile de date încorporate și definite de utilizator sunt acceptate în C++. |
| C este un limbaj bazat pe funcții deoarece C este un limbaj de programare procedural. | C++ este un limbaj bazat pe obiect deoarece este o programare orientată pe obiecte. |
| Supraîncărcarea funcției și a operatorului nu este acceptată în C. | Supraîncărcarea funcțiilor și a operatorului este acceptată de C++. |
| C este un limbaj bazat pe funcții. | C++ este un limbaj bazat pe obiecte |
| Funcțiile din C nu sunt definite în interiorul structurilor. | Funcțiile pot fi utilizate în interiorul unei structuri în C++. |
| Caracteristicile spațiului de nume nu sunt prezente în interiorul C. | Spațiu de nume este folosit de C++, care evită coliziunile de nume. |
| Antetul IO standard este stdio.h . | Antetul IO standard este iostream.h . |
| Variabilele de referință nu sunt acceptate de C. | Variabilele de referință sunt acceptate de C++. |
| Funcțiile virtuale și prieten nu sunt acceptate de C. | Virtual și funcții de prietenie sunt suportate de C++. |
| C nu acceptă moștenirea. | C++ acceptă moștenirea. |
| În loc să se concentreze pe date, C se concentrează pe metodă sau proces. | C++ se concentrează pe date în loc să se concentreze pe metodă sau procedură. |
| C prevede malloc() și calloc() functii pentru alocare dinamică a memoriei , și gratuit() pentru de-alocarea memoriei. | C++ oferă nou operator pentru alocarea memoriei și operator de ștergere pentru de-alocarea memoriei. |
| Suportul direct pentru gestionarea excepțiilor nu este acceptat de C. | Tratarea excepțiilor este suportat de C++. |
| scanf() și funcțiile printf() sunt folosite pentru intrare/ieșire în C. | cin si cout sunt folosite pentru intrare/ieșire în C++ . |
| Structurile C nu au modificatori de acces. | Structurile C++ au modificatori de acces. |
| Nu există o verificare strictă a tipului în limbajul de programare C. | Verificarea strictă a tipului efectuată în C++. Atât de multe programe care rulează bine în compilatorul C vor avea ca rezultat multe avertismente și erori în compilatorul C++. |
| C nu acceptă supraîncărcare | C++ acceptă supraîncărcarea |
| Tipul de joc cu uniuni este permis (C99 și mai târziu) | Tipul de joc cu uniuni este un comportament nedefinit (cu excepția unor circumstanțe foarte specifice) |
| Inițializatoarele denumite pot apărea necorespunzătoare | Inițializatorii numiți trebuie să se potrivească cu aspectul de date al structurii |
| Extensia fișierului este .c | Extensia fișierului este .cpp sau .c++ sau .cc sau .cxx |
| Meta-programare: macrocomenzi + _Generic() | Meta-programare: șabloane (macro-urile sunt încă acceptate, dar descurajate) |
| Există 32 de cuvinte cheie în C | Există 97 de cuvinte cheie în C++ |