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