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