logo

Verschil tussen C en C++

Overeenkomsten tussen C En C++ Zijn:

  • Beide talen hebben een vergelijkbare syntaxis.
  • De codestructuur van beide talen is hetzelfde.
  • De compilatie van beide talen is vergelijkbaar.
  • Ze delen dezelfde basissyntaxis. Bijna alle operators en trefwoorden van C zijn ook aanwezig in C++ en doen hetzelfde.
  • C++ heeft een iets uitgebreidere grammatica dan C, maar de basisgrammatica is hetzelfde.
  • Het basisgeheugenmodel van beide ligt zeer dicht bij de hardware.
  • Dezelfde noties van stack, heap, file-scope en statische variabelen zijn aanwezig in beide talen.



Verschillen tussen C En C++ Zijn:
C++ wordt vaak gezien als een superset van C. C++ staat ook bekend als een C met klasse. Dit was bijna waar toen C++ oorspronkelijk werd gemaakt, maar de twee talen zijn in de loop van de tijd geëvolueerd, waarbij C een aantal functies heeft overgenomen die dat ook niet waren. niet gevonden in de hedendaagse versie van C++ of nog steeds niet in een versie van C++ terechtgekomen. Dat gezegd hebbende, is C++ nog steeds grotendeels een superset van C-toevoegingen Object georiënteerd programmeren , Afhandeling van uitzonderingen , Templating en een uitgebreidere standaardbibliotheek.

Hieronder vindt u een tabel met enkele van de meer voor de hand liggende en algemene verschillen tussen C en C++. Er zijn veel subtielere verschillen tussen de talen en tussen versies van de talen.

willekeurig getal in Java
C C++
C werd tussen 1969 en 1973 ontwikkeld door Dennis Ritchie bij AT&T Bell Labs. C++ werd in 1979 ontwikkeld door Bjarne Stroustrup.
C ondersteunt geen polymorfisme, inkapseling en overerving, wat betekent dat C geen objectgeoriënteerd programmeren ondersteunt. C++ ondersteunt polymorfisme , inkapseling , En erfenis omdat het een objectgeoriënteerde programmeertaal is.
C is (meestal) een subset van C++. C++ is (meestal) een superset van C.
Aantal trefwoorden in C:
*C90: 32
*C99: 37
*C11: 44
*C23: 59
Aantal trefwoorden in C++:
* C++98: 63
* C++11: 73
* C++17: 73
* C++20: 81
Voor de ontwikkeling van code ondersteunt C procedurele programmering . C++ staat bekend als hybride taal omdat C++ beide ondersteunt procedureel En objectgeoriënteerde programmeerparadigma's .
Gegevens en functies zijn gescheiden in C omdat het een procedurele programmeertaal is. Gegevens en functies worden samen ingekapseld in de vorm van een object in C++.
C biedt geen ondersteuning voor het verbergen van informatie. Gegevens worden verborgen door de inkapseling om ervoor te zorgen dat gegevensstructuren en operatoren worden gebruikt zoals bedoeld.
Ingebouwde gegevenstypen worden ondersteund in C. Ingebouwde en door de gebruiker gedefinieerde gegevenstypen worden ondersteund in C++.
C is een functiegestuurde taal omdat C een procedurele programmeertaal is. C++ is een objectgestuurde taal omdat het objectgeoriënteerd programmeren is.
Functie- en operatoroverbelasting wordt niet ondersteund in C. Overbelasting van functies en operators wordt ondersteund door C++.
C is een functiegestuurde taal. C++ is een objectgestuurde taal
Functies in C zijn niet gedefinieerd binnen structuren. Functies kunnen worden gebruikt binnen een structuur in C++.
Naamruimtefuncties zijn niet aanwezig in de C. Naamruimte wordt gebruikt door C++, waardoor naambotsingen worden vermeden.
Standaard IO-header is stdio.h . Standaard IO-header is iostream.h .
Referentievariabelen worden niet ondersteund door C. Referentievariabelen worden ondersteund door C++.
Virtuele en vriendfuncties worden niet ondersteund door C. Virtueel En vriend functies worden ondersteund door C++.
C ondersteunt geen overerving. C++ ondersteunt overerving.
In plaats van zich te concentreren op gegevens, richt C zich op methode of proces. C++ richt zich op data in plaats van op methode of procedure.
C biedt malloc() En calloc() functies voor dynamische geheugentoewijzing , En vrij() voor het de-allocatie van geheugen. C++ biedt nieuwe exploitant voor geheugentoewijzing en operator verwijderen voor het de-allocatie van geheugen.
Directe ondersteuning voor de afhandeling van uitzonderingen wordt niet ondersteund door C. Afhandeling van uitzonderingen wordt ondersteund door C++.
scanf() en printf()-functies worden gebruikt voor invoer/uitvoer in C. cin en cout worden gebruikt invoer/uitvoer in C++ .
C-structuren hebben geen toegangsmodificatoren. C++-structuren hebben toegangsmodificatoren.
Er is geen strikte typecontrole in de programmeertaal C. Strikte typecontrole uitgevoerd in C++. Zoveel programma's die goed werken in de C-compiler zullen resulteren in veel waarschuwingen en fouten onder de C++-compiler.
C ondersteunt geen overbelasting C++ ondersteunt overbelasting
Type punning met vakbonden is toegestaan ​​(C99 en hoger) Type punning met vakbonden is ongedefinieerd gedrag (behalve in zeer specifieke omstandigheden)
Benoemde initialisatieprogramma's kunnen in de verkeerde volgorde verschijnen Benoemde initialisatoren moeten overeenkomen met de gegevensindeling van de struct
Bestandsextensie is .c De bestandsextensie is .cpp of .c++ of .cc of .cxx
Metaprogrammering: macro's + _Generic() Metaprogrammering: sjablonen (macro's worden nog steeds ondersteund, maar worden afgeraden)
Er zijn 32 trefwoorden in de C Er zijn 97 trefwoorden in C++