Likheter mellom C og C++ er:
- Begge språkene har en lignende syntaks.
- Kodestrukturen til begge språkene er den samme.
- Sammenstillingen av begge språkene er lik.
- De deler den samme grunnleggende syntaksen. Nesten alle Cs operatører og nøkkelord er også til stede i C++ og gjør det samme.
- C++ har en litt utvidet grammatikk enn C, men den grunnleggende grammatikken er den samme.
- Grunnleggende minnemodell av begge er veldig nær maskinvaren.
- De samme forestillingene om stabel, heap, filomfang og statiske variabler er tilstede i begge språkene.

Forskjeller mellom C og C++ er:
C++ blir ofte sett på som et supersett av C. C++ er også kjent som en C med klasse. Dette var nesten sant da C++ opprinnelig ble opprettet, men de to språkene har utviklet seg over tid med C som plukket opp en rekke funksjoner som enten var ikke funnet i den moderne versjonen av C++ eller har fortsatt ikke gjort det til noen versjon av C++. Når det er sagt, er C++ fortsatt stort sett et supersett av C-tilsetning Objektorientert programmering , Avvikshåndtering , maler og et mer omfattende standardbibliotek.
Nedenfor er en tabell over noen av de mer åpenbare og generelle forskjellene mellom C og C++. Det er mange mer subtile forskjeller mellom språkene og mellom versjoner av språkene.
| C | C++ |
|---|---|
| C ble utviklet av Dennis Ritchie mellom 1969 og 1973 ved AT&T Bell Labs. | C++ ble utviklet av Bjarne Stroustrup i 1979. |
| C støtter ikke polymorfisme, innkapsling og arv, noe som betyr at C ikke støtter objektorientert programmering. | C++ støtter polymorfisme , innkapsling , og arv fordi det er et objektorientert programmeringsspråk. |
| C er (for det meste) en delmengde av C++. | C++ er (for det meste) et supersett av C. |
| Antall søkeord i C: * C90: 32 * C99: 37 * C11: 44 * C23: 59 | Antall søkeord i C++: * C++98: 63 * C++11: 73 * C++17: 73 * C++20: 81 |
| For utvikling av kode, støtter C prosedyreprogrammering . | C++ er kjent som hybridspråk fordi C++ støtter begge prosedyremessig og objektorienterte programmeringsparadigmer . |
| Data og funksjoner er atskilt i C fordi det er et prosedyrespråk. | Data og funksjoner er innkapslet sammen i form av et objekt i C++. |
| C støtter ikke skjult informasjon. | Data skjules av innkapslingen for å sikre at datastrukturer og operatører brukes etter hensikten. |
| Innebygde datatyper støttes i C. | Innebygde og brukerdefinerte datatyper støttes i C++. |
| C er et funksjonsdrevet språk fordi C er et prosedyrespråk. | C++ er et objektdrevet språk fordi det er en objektorientert programmering. |
| Funksjon og operatøroverbelastning støttes ikke i C. | Funksjon og operatøroverbelastning støttes av C++. |
| C er et funksjonsdrevet språk. | C++ er et objektdrevet språk |
| Funksjoner i C er ikke definert inne i strukturer. | Funksjoner kan brukes inne i en struktur i C++. |
| Navneområdefunksjoner finnes ikke inne i C. | Navneområde brukes av C++, som unngår navnekollisjoner. |
| Standard IO-header er stio.h . | Standard IO-header er iostream.h . |
| Referansevariabler støttes ikke av C. | Referansevariabler støttes av C++. |
| Virtuelle funksjoner og vennefunksjoner støttes ikke av C. | Virtuell og vennefunksjoner støttes av C++. |
| C støtter ikke arv. | C++ støtter arv. |
| I stedet for å fokusere på data, fokuserer C på metode eller prosess. | C++ fokuserer på data i stedet for å fokusere på metode eller prosedyre. |
| C gir malloc() og calloc() funksjoner for dynamisk minnetildeling , og gratis() for minnedeallokering. | C++ gir ny operatør for minnetildeling og slett operatør for minnedeallokering. |
| Direkte støtte for unntakshåndtering støttes ikke av C. | Avvikshåndtering støttes av C++. |
| scanf() og printf()-funksjoner brukes for input/output i C. | cin og cout brukes til input/output i C++ . |
| C-strukturer har ikke tilgangsmodifikatorer. | C ++-strukturer har tilgangsmodifikatorer. |
| Det er ingen streng typekontroll i programmeringsspråket C. | Streng type innsjekk utført i C++. Så mange programmer som kjører bra i C-kompilatoren vil resultere i mange advarsler og feil under C++-kompilatoren. |
| C støtter ikke overbelastning | C++ støtter overbelastning |
| Tekstspilling med fagforeninger er tillatt (C99 og senere) | Typer ordspilling med fagforeninger er udefinert oppførsel (bortsett fra i svært spesifikke omstendigheter) |
| Navngitte initialisatorer kan vises ute av funksjon | Navngitte initialisatorer må samsvare med dataoppsettet til strukturen |
| Filtypen er .c | Filtypen er .cpp eller .c++ eller .cc eller .cxx |
| Metaprogrammering: makroer + _Generic() | Metaprogrammering: maler (makroer støttes fortsatt, men frarådes) |
| Det er 32 nøkkelord i C | Det er 97 nøkkelord i C++ |