Ligheder mellem C og C++ er:
- Begge sprog har en lignende syntaks.
- Kodestrukturen for begge sprog er den samme.
- Samlingen af begge sprog er ens.
- De deler den samme grundlæggende syntaks. Næsten alle C's operatorer og nøgleord er også til stede i C++ og gør det samme.
- C++ har en lidt udvidet grammatik end C, men den grundlæggende grammatik er den samme.
- Grundlæggende hukommelsesmodel af begge er meget tæt på hardwaren.
- De samme forestillinger om stack, heap, filomfang og statiske variabler er til stede i begge sprog.

Forskelle mellem C og C++ er:
C++ betragtes ofte som et supersæt af C. C++ er også kendt som et C med klasse. Dette var næsten rigtigt, da C++ oprindeligt blev oprettet, men de to sprog har udviklet sig over tid, hvor C har opfanget en række funktioner, der enten var t fundet i den moderne version af C++ eller stadig ikke er blevet til nogen version af C++. Når det er sagt, er C++ stadig for det meste et supersæt af C-tilføjelse Objektorienteret programmering , Undtagelseshåndtering , skabeloner og et mere omfattende standardbibliotek.
Nedenfor er en tabel over nogle af de mere åbenlyse og generelle forskelle mellem C og C++. Der er mange mere subtile forskelle mellem sprogene og mellem versioner af sprogene.
| C | C++ |
|---|---|
| C blev udviklet af Dennis Ritchie mellem år 1969 og 1973 på AT&T Bell Labs. | C++ blev udviklet af Bjarne Stroustrup i 1979. |
| C understøtter ikke polymorfi, indkapsling og nedarvning, hvilket betyder, at C ikke understøtter objektorienteret programmering. | C++ understøtter polymorfi , indkapsling , og arv fordi det er et objektorienteret programmeringssprog. |
| C er (for det meste) en delmængde af C++. | C++ er (for det meste) et supersæt af C. |
| Antallet af søgeord i C: * C90: 32 * C99: 37 * C11: 44 * C23: 59 | Antallet af søgeord i C++: * C++98: 63 * C++11: 73 * C++17: 73 * C++20: 81 |
| Til udvikling af kode understøtter C proceduremæssig programmering . | C++ er kendt som hybridsprog, fordi C++ understøtter begge dele proceduremæssige og objektorienterede programmeringsparadigmer . |
| Data og funktioner er adskilt i C, fordi det er et proceduremæssigt programmeringssprog. | Data og funktioner er indkapslet sammen i form af et objekt i C++. |
| C understøtter ikke at skjule oplysninger. | Data skjules af indkapslingen for at sikre, at datastrukturer og operatører bruges efter hensigten. |
| Indbyggede datatyper understøttes i C. | Indbyggede og brugerdefinerede datatyper understøttes i C++. |
| C er et funktionsdrevet sprog, fordi C er et proceduremæssigt programmeringssprog. | C++ er et objektdrevet sprog, fordi det er en objektorienteret programmering. |
| Funktion og operatøroverbelastning understøttes ikke i C. | Funktion og operatøroverbelastning understøttes af C++. |
| C er et funktionsdrevet sprog. | C++ er et objektdrevet sprog |
| Funktioner i C er ikke defineret inde i strukturer. | Funktioner kan bruges inde i en struktur i C++. |
| Navneområdefunktioner er ikke til stede i C. | Navneområde bruges af C++, som undgår navnekollisioner. |
| Standard IO header er stdio.h . | Standard IO header er iostream.h . |
| Referencevariabler understøttes ikke af C. | Referencevariabler understøttes af C++. |
| Virtuelle funktioner og vennefunktioner understøttes ikke af C. | Virtuelt og vennefunktioner understøttes af C++. |
| C understøtter ikke arv. | C++ understøtter arv. |
| I stedet for at fokusere på data, fokuserer C på metode eller proces. | C++ fokuserer på data i stedet for at fokusere på metode eller procedure. |
| C giver malloc() og calloc() funktioner til dynamisk hukommelsesallokering , og gratis() til hukommelsesdeallokering. | C++ giver ny operatør til hukommelsestildeling og slet operatør til hukommelsesdeallokering. |
| Direkte support til undtagelseshåndtering understøttes ikke af C. | Undtagelseshåndtering er understøttet af C++. |
| scanf() og printf()-funktioner bruges til input/output i C. | cin og cout bruges til input/output i C++ . |
| C-strukturer har ikke adgangsmodifikatorer. | C ++ strukturer har adgangsmodifikatorer. |
| Der er ingen streng typekontrol i programmeringssproget C. | Streng type indtjekning udført i C++. Så mange programmer, der kører godt i C compiler, vil resultere i mange advarsler og fejl under C++ compiler. |
| C understøtter ikke overbelastning | C++ understøtter overbelastning |
| Tekstspil med fagforeninger er tilladt (C99 og senere) | Typisk ordspil med fagforeninger er udefineret adfærd (undtagen under meget specifikke omstændigheder) |
| Navngivne initialiseringer kan forekomme ude af drift | Navngivne initialiseringsprogrammer skal matche strukturens datalayout |
| Filtypenavnet er .c | Filtypenavnet er .cpp eller .c++ eller .cc eller .cxx |
| Meta-programmering: makroer + _Generisk() | Meta-programmering: skabeloner (makroer understøttes stadig, men frarådes) |
| Der er 32 nøgleord i C | Der er 97 nøgleord i C++ |