logo

Diferència entre C i C++

Similituds entre C i C++ són:

  • Els dos idiomes tenen una sintaxi semblant.
  • L'estructura del codi dels dos idiomes és la mateixa.
  • La compilació dels dos idiomes és similar.
  • Comparteixen la mateixa sintaxi bàsica. Gairebé tots els operadors i paraules clau de C també estan presents en C++ i fan el mateix.
  • C++ té una gramàtica lleugerament estesa que C, però la gramàtica bàsica és la mateixa.
  • El model de memòria bàsica de tots dos és molt proper al maquinari.
  • Les mateixes nocions de pila, munt, àmbit de fitxer i variables estàtiques estan presents en ambdós idiomes.



model tcp ip

Diferències entre C i C++ són:
C++ sovint es veu com un superconjunt de C. C++ també es coneix com a C amb classe Això era gairebé cert quan es va crear originalment C++, però els dos idiomes han evolucionat amb el temps amb C agafant una sèrie de característiques que o bé eren. no s'ha trobat a la versió contemporània de C++ o encara no l'ha incorporat a cap versió de C++. Dit això, C++ segueix sent principalment un superconjunt d'addició de C Programació Orientada a Objectes , Tractament d'excepcions , Plantilles i una biblioteca estàndard més extensa.

cacauet vs cacauet

A continuació es mostra una taula d'algunes de les diferències més òbvies i generals entre C i C++. Hi ha moltes diferències més subtils entre les llengües i entre les versions de les llengües.

C C++
C va ser desenvolupat per Dennis Ritchie entre l'any 1969 i el 1973 a AT&T Bell Labs. C++ va ser desenvolupat per Bjarne Stroustrup el 1979.
C no admet polimorfisme, encapsulació i herència, la qual cosa significa que C no admet programació orientada a objectes. Suporta C++ polimorfisme , encapsulació , i herència perquè és un llenguatge de programació orientat a objectes.
C és (principalment) un subconjunt de C++. C++ és (principalment) un superconjunt de C.
Nombre de paraules clau en C:
* C90: 32
* C99: 37
* C11: 44
* C23: 59
Nombre de paraules clau en C++:
* C++98: 63
* C++11: 73
* C++17: 73
* C++20: 81
Per al desenvolupament de codi, C admet programació procedimental . C++ es coneix com a llenguatge híbrid perquè C++ admet tots dos procedimental i paradigmes de programació orientada a objectes .
Les dades i les funcions estan separades en C perquè és un llenguatge de programació procedimental. Les dades i les funcions s'encapsulen juntes en forma d'objecte en C++.
C no admet l'ocultació d'informació. L'encapsulació oculta les dades per garantir que les estructures i els operadors de dades s'utilitzen com es pretén.
Els tipus de dades integrats són compatibles amb C. Els tipus de dades integrats i definits per l'usuari són compatibles amb C++.
C és un llenguatge basat en funcions perquè C és un llenguatge de programació procedimental. C++ és un llenguatge dirigit per objectes perquè és una programació orientada a objectes.
La sobrecàrrega de funcions i operadors no s'admet a C. La sobrecàrrega de funcions i operadors és compatible amb C++.
C és un llenguatge basat en funcions. C++ és un llenguatge dirigit per objectes
Les funcions en C no es defineixen dins d'estructures. Les funcions es poden utilitzar dins d'una estructura en C++.
Les característiques de l'espai de noms no estan presents dins del C. Espai de noms és utilitzat per C++, que evita col·lisions de noms.
La capçalera d'IO estàndard és stdio.h . La capçalera d'IO estàndard és iostream.h .
Les variables de referència no són compatibles amb C. Les variables de referència són compatibles amb C++.
Les funcions virtuals i d'amics no són compatibles amb C. Virtual i funcions d'amic són compatibles amb C++.
C no admet l'herència. C++ admet l'herència.
En lloc de centrar-se en les dades, C se centra en el mètode o procés. C++ se centra en les dades en lloc de centrar-se en el mètode o procediment.
C proporciona malloc() i calloc() funcions per assignació de memòria dinàmica , i gratuït () per a la desassignació de memòria. C++ proporciona nou operador per a l'assignació de memòria i suprimir l'operador per a la desassignació de memòria.
El suport directe per al maneig d'excepcions no és compatible amb C. Tractament d'excepcions és compatible amb C++.
scanf() i les funcions printf() s'utilitzen per a l'entrada/sortida en C. cin i cout serveixen per a entrada/sortida en C++ .
Les estructures C no tenen modificadors d'accés. Les estructures C++ tenen modificadors d'accés.
No hi ha una verificació de tipus estricta en llenguatge de programació C. La verificació de tipus estricte es fa en C++. Tants programes que funcionen bé al compilador C donaran lloc a molts avisos i errors amb el compilador C++.
C no admet la sobrecàrrega C++ admet la sobrecàrrega
Es permet el joc de paraules amb unions (C99 i posteriors) Els jocs de paraules amb els sindicats són un comportament indefinit (excepte en circumstàncies molt específiques)
Els inicialitzadors amb nom poden aparèixer fora d'ordre Els inicialitzadors amb nom han de coincidir amb el disseny de dades de l'estructura
L'extensió del fitxer és .c L'extensió del fitxer és .cpp o .c++ o .cc o .cxx
Metaprogramació: macros + _Generic() Metaprogramació: plantilles (encara s'admeten les macros però no es recomanen)
Hi ha 32 paraules clau al C Hi ha 97 paraules clau al C++