logo

Diferența dintre C și C++

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