logo

Skillnaden mellan C och C++

Likheter mellan C och C++ är:

  • Båda språken har en liknande syntax.
  • Kodstrukturen för båda språken är densamma.
  • Sammanställningen av båda språken är likartad.
  • De delar samma grundläggande syntax. Nästan alla C:s operatorer och nyckelord finns också i C++ och gör samma sak.
  • C++ har en något utökad grammatik än C, men den grundläggande grammatiken är densamma.
  • Grundläggande minnesmodell av båda är mycket nära hårdvaran.
  • Samma begrepp om stack, heap, filomfattning och statiska variabler finns i båda språken.



Skillnader mellan C och C++ är:
C++ ses ofta som en superuppsättning av C. C++ är också känd som en C med klass. Detta var nästan sant när C++ ursprungligen skapades, men de två språken har utvecklats över tiden med C som plockar upp ett antal funktioner som antingen var inte finns i den samtida versionen av C++ eller har fortfarande inte gjort det till någon version av C++. Som sagt, C++ är fortfarande mestadels en superset av C-tillägg Objektorienterad programmering , Undantagshantering , Mallar och ett mer omfattande standardbibliotek.

Nedan är en tabell över några av de mer uppenbara och allmänna skillnaderna mellan C och C++. Det finns många mer subtila skillnader mellan språken och mellan versioner av språken.

java oops koncept
C C++
C utvecklades av Dennis Ritchie mellan åren 1969 och 1973 vid AT&T Bell Labs. C++ utvecklades av Bjarne Stroustrup 1979.
C stöder inte polymorfism, inkapsling och arv vilket betyder att C inte stöder objektorienterad programmering. C++ stöder polymorfism , inkapsling , och arv eftersom det är ett objektorienterat programmeringsspråk.
C är (för det mesta) en delmängd av C++. C++ är (för det mesta) en supermängd av C.
Antal nyckelord i C:
* C90: 32
* C99: 37
* C11: 44
* C23: 59
Antal nyckelord i C++:
* C++98: 63
* C++11: 73
* C++17: 73
* C++20: 81
För utveckling av kod stöder C procedurprogrammering . C++ är känt som hybridspråk eftersom C++ stöder båda processuella och objektorienterade programmeringsparadigm .
Data och funktioner separeras i C eftersom det är ett procedurmässigt programmeringsspråk. Data och funktioner är inkapslade tillsammans i form av ett objekt i C++.
C stöder inte informationsdöljning. Data döljs av Inkapslingen för att säkerställa att datastrukturer och operatörer används som avsett.
Inbyggda datatyper stöds i C. Inbyggda och användardefinierade datatyper stöds i C++.
C är ett funktionsdrivet språk eftersom C är ett processuellt programmeringsspråk. C++ är ett objektdrivet språk eftersom det är en objektorienterad programmering.
Funktion och operatörsöverbelastning stöds inte i C. Funktion och operatörsöverbelastning stöds av C++.
C är ett funktionsdrivet språk. C++ är ett objektdrivet språk
Funktioner i C är inte definierade inuti strukturer. Funktioner kan användas inuti en struktur i C++.
Namnutrymmesfunktioner finns inte i C. Namnutrymme används av C++, som undviker namnkollisioner.
Standard IO header är stdio.h . Standard IO header är iostream.h .
Referensvariabler stöds inte av C. Referensvariabler stöds av C++.
Virtuella funktioner och vänfunktioner stöds inte av C. Virtuell och vänfunktioner stöds av C++.
C stöder inte arv. C++ stöder arv.
Istället för att fokusera på data fokuserar C på metod eller process. C++ fokuserar på data istället för att fokusera på metod eller procedur.
C tillhandahåller malloc() och calloc() funktioner för dynamisk minnesallokering , och fri() för minnesdeallokering. C++ tillhandahåller ny operatör för minnestilldelning och ta bort operatör för minnesdeallokering.
Direktstöd för undantagshantering stöds inte av C. Undantagshantering stöds av C++.
scanf() och printf()-funktioner används för input/output i C. cin och cout används för input/output i C++ .
C-strukturer har inte åtkomstmodifierare. C ++-strukturer har åtkomstmodifierare.
Det finns ingen strikt typkontroll i programmeringsspråket C. Strikt incheckning utförd i C++. Så många program som fungerar bra i C-kompilatorn kommer att resultera i många varningar och fel under C++-kompilatorn.
C stöder inte överbelastning C++ stöder överbelastning
Typpunning med fackföreningar är tillåtet (C99 och senare) Typpunkning med fackföreningar är odefinierat beteende (förutom under mycket specifika omständigheter)
Namngivna initialiserare kan visas ur funktion Namngivna initialiserare måste matcha strukturens datalayout
Filändelsen är .c Filtillägget är .cpp eller .c++ eller .cc eller .cxx
Metaprogrammering: makron + _Generic() Metaprogrammering: mallar (makron stöds fortfarande men avråds från)
Det finns 32 nyckelord i C Det finns 97 nyckelord i C++