A legfontosabb különbség: C és C ++ két különböző számítógépes programozási nyelv. A C ++ -ot a C programozási nyelvből fejlesztették ki; ugyanakkor a természetben teljesen eltérőek. A legnyilvánvalóbb különbség az, hogy a C egy eljárásorientált nyelv, míg a C ++ mind az eljárási, mind az objektum-orientált programozást támogatja, ezért gyakran hibrid nyelvnek nevezik.
A C a legrégebben használt programozási nyelvek egyike, és az egyik legelterjedtebb programozási nyelv. Ezt folyamatosan alkalmazták olyan alkalmazásokban, amelyek előzőleg összeszerelési nyelven kódoltak. Ez magában foglalja a UNIX számítógép operációs rendszerét is. A C szintén közvetlenül vagy közvetve befolyásolta a későbbi programozási nyelveket, mint például a C #, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python és Unix C-héjait. Mindezen új nyelvek ellenére a C továbbra is népszerű programozási nyelv.
A C ++ eredetileg a C kiegészítésként indult. A C és C közötti forráskapcsolatot tervezték. Ugyanakkor osztályokat, virtuális funkciókat, operátor túlterhelést, többszörös öröklést, sablonokat, kivételkezelést, stb. elég ahhoz, hogy önállóan programozási nyelvnek minősüljön. Eredetileg 1998-ban ratifikálták, mint ISO / IEC 14882: 1998 minősített programozási nyelv. Ma a C ++ már általánosan használt a hardvertervezésben.
A C egy általános célú programozási nyelv, amely a pontosvesszőt használja a pontosvesszővel (;), valamint a mondatok blokkolására szolgáló göndör zárójelek ({}). A rendszer strukturált programozási lehetőségekkel rendelkezik, és kialakítása olyan konstrukciókat kínál, amelyek hatékonyan térképezhetik a tipikus gépi utasításokat. Lehetővé teszi a lexikális változó hatókört és rekurziót, és statikus típusú rendszerrel rendelkezik, amely megakadályozza a nem szándékolt műveleteket.
A C ++ -hoz képest azonban a C számos korlátozással rendelkezik. Mivel a C nem objektumorientált, nem támogatja az OOPS fogalmakat. A C nem támogatja a funkciót és a kezelő túlterhelését. Nem tudja használni a struktúrák belső funkcióit. Nem támogatja a virtuális funkciókat és a referencia változókat, vagy a kivételkezelést. Nem támogatja a referencia változókat is. Ezen túlmenően a C nem kapszulázást vagy adatbiztosítást is. Összehasonlításképpen, a C ++ támogatja ezeket a funkciókat.
A két nyelv is különbözik attól, hogy a címtár-memória funkciók, a bemeneti kimenet és a GUI programozás milyen módon történik. Például a C calloc (), malloc () és szabad () függvényeket használ fel a memória felosztására és kiosztására, míg a C ++ új és törlést használ. C a scanf () és printf () -t használja bemeneti és kimeneti célokra, míg a C ++ a cin >> és cout << operátorokat használja. C támogatja a GTK eszközt a GUI programozáshoz, míg a C ++ támogatja a Qt eszközöket a GUI programozáshoz. A másik különbség az, hogy a C megköveteli, hogy a program tetején minden változót deklaráljon, míg a C ++-ban a változók a programban bárhol jeleníthetők meg.
Továbbá a C ++-t általában könnyebb megtanulni, mivel a felhasználóbarátabb, mint a C. C ++-nak számos további funkciója is van, amelyek megkönnyítik a kódolást, különösen a C-keretrendszerben új felhasználók számára. Sokan azonban azt állítják, hogy valójában számít. A két nyelv annyira különbözik egymástól, hogy valójában két egymástól független nyelv lehet. Ne feledje, hogy a C sokkal strukturáltabb, mint a C ++, míg a C ++ kifejezettebb és absztraktabb, mint a C.
C és C ++ összehasonlítása:
C | C ++ | |
Alapított | Dennis Ritchie fejlesztette ki az AT&T Bell Labs 1969 és 1973 között. | A Bjarne Stroustrup 1979-től kezdve a Bell Labs-ben fejlesztette ki. |
Forráskód | Szabad formátumú program forráskódja | Eredetileg a C programozási nyelvből lett kifejlesztve |
Nyelv | Eljárásorientált nyelv | Támogatja mind az eljárási, mind az objektum-orientált programozási paradigmákat; ezért gyakran hibrid nyelvnek nevezik. |
Megközelítés | A felülről lefelé irányuló megközelítést követi. | Az alulról felfelé irányuló megközelítést követi. |
Kapcsolat | A C a C ++ egy részhalmaza. Nem futtathatja a C ++ kódot. | A C ++ a C. C ++ felülírója, a C-kódot pedig a legtöbb C futtathatja, míg a C nem tudja futtatni a C ++ kódot. |
Hajtás | Funkcionális nyelv | Objektum-alapú nyelv |
Fókusz | A módszerre vagy folyamatra összpontosít, nem pedig az adatokra. | Elsősorban az adatokra vagy az eljárásra összpontosít. |
Építőkockák | Funkciók | tárgyak |
Kulcsszavak | 32 kulcsszót tartalmaz | 52 kulcsszót tartalmaz |
OOPS fogalmak | Mivel a „C” nyelv az eljárásorientált nyelv, nem támogatja az OOPS-fogalmakat, mint például az osztály, az objektum, az öröklés, a polimorfizmus, az adatok elrejtése stb. | Objektum-orientált nyelvként a C ++ támogatja az osztályt, az objektumot, az adatok elrejtését, a polimorfizmust, az öröklést, az absztrakciót stb. |
Funkciók |
|
|
Memória funkciók | Calloc (), malloc () és szabad () függvényeket használ a memória felosztására és felosztására. | Új és új operátorokat használ ugyanarra a célra. |
Encapsulation | Nem támogatja. Az adatok és funkciók külön és szabad entitások. | Támogatja a kapszulázást. Az adatok és funkciók egy objektum formájában együtt vannak kapszulázva. Az objektumok osztálya az objektum szerkezetének vázlatát mutatja. |
Információk elrejtése | A C nem támogatja az információ elrejtését. Itt az adatok szabad entitások, és külső kóddal manipulálhatók. | A kapszulázás elrejti az adatokat annak biztosítása érdekében, hogy az adatszerkezeteket és az operátorokat a tervezett módon használják. |
Adat | Támogatja a beépített és primitív adattípusokat. Az adatok nem biztosíthatók nem objektum-orientáltak miatt | Támogatja a beépített és a felhasználó által definiált adattípusokat is. Az adatok a C ++-ban vannak rögzítve (rejtve) |
Szint | Alacsony szintű nyelv | Középszintű nyelv |
Bemenet kimenet | A „C” nyelv a scanf () -t és a printf () -t használja a bemenet és a kimenet számára. | A „C ++” nyelv a cin >> és cout << operátorokat használja a bemenet és a kimenet számára. |
A változók nyilatkozata | A C megköveteli, hogy minden változót a program tetején deklaráljon. | A C ++-ban a változók a programban bárhol megadhatók a használat előtt. |
Többszörös nyilatkozat | A globális változók többszörös nyilatkozata megengedett. | A globális változók többszörös nyilatkozata nem megengedett. |
térképészet | Az adatok és a funkciók közötti leképezés nehéz és bonyolult. | Az adatok és a függvény közötti leképezés használható az "Objektumok" használatával |
GUI programozás | C támogatja a GTK eszközt a GUI programozáshoz | A C ++ támogatja a Qt eszközöket a GUI programozáshoz |
Öröklés | Az öröklés C-ben nem lehetséges | Az öröklés C ++-ban lehetséges |
Fájlkiterjesztés | Fájlkiterjesztése .c | Fájlkiterjesztés van .cpp |
Alapértelmezett fejlécfájl | A C nyelvben használt alapértelmezett fejlécfájl a stdio.h | A C ++ alapértelmezett fejlécfájlja az iosteam.h |
Néhány példa a C és C ++ közötti különbségre:
Példák | C | C ++ |
Változó nyilatkozat | Csak a tetején: int i; (i = 10; i <10; i ++) | Bárhol a programban: (int i = 10; i <10; i ++) |
Memóriaelosztás | malloc: int * x = malloc (mérete (int)); int * x_array = malloc (méret (int) * 10); | Új: int * x = új int; int * x_array = új int [10]; |
Memória felszabadítása | Ingyenes: szabad (x); szabad (x_array); | Töröl: x törlése; [] x_array törlése; |