Peamine erinevus: C ja C ++ on kaks erinevat programmeerimiskeelt. C ++ töötati välja C programmeerimiskeelest; kuid need on oma olemuselt üsna erinevad. Kõige ilmsem erinevus on see, et C on protseduurile orienteeritud keel, samas kui C ++ toetab nii protseduurilist kui ka objektorienteeritud programmeerimist, seetõttu nimetatakse seda sageli hübriidkeeleks.
C on üks vanimaid praegu kasutatavaid programmeerimiskeeli ja on üks enimkasutatavaid programmeerimiskeeli. Seda on pidevalt kasutatud rakendustes, mis olid eelnevalt kodeeritud keeltes. See hõlmab ka UNIX-i operatsioonisüsteemi. C mõjutas ka otseselt või kaudselt paljusid hilisemaid programmeerimiskeeli, nagu C #, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python ja Unixi C-kesta. Hoolimata kõigist nendest uutest keeltest on C endiselt populaarne programmeerimiskeel.
Algselt alustas C ++ C-i täiustamist. See oli mõeldud C- allika ja lingiga ühilduvaks. Kuid see lisas klassid, virtuaalsed funktsioonid, operaatori ülekoormuse, mitme pärandi, mallid, erandite käitlemise jne. piisavalt programmeerimiskeeleks. Algselt ratifitseeriti see 1998. aastal ISO / IEC 14882: 1998 sertifitseeritud programmeerimiskeelena. Tänapäeval kasutatakse C ++-d tavaliselt riistvarakujunduses.
C on üldotstarbeline programmeerimiskeel, mis kasutab semikoolonit (;) avalduse terminaatorina, samuti kõverate traksidega ({}) avalduste plokkide rühmitamiseks. Sellel on vahendid struktureeritud programmeerimiseks ja selle konstruktsioon pakub konstruktsioone, mis suudavad efektiivselt kaardistada tüüpilisi masinajuhiseid. Samuti võimaldab see leksikaalset muutuvust ja rekursiooni ning sellel on staatiline süsteem, mis takistab mitut tahtmatut tegevust.
Kuid võrreldes C ++ -ga on C-l palju piiranguid. Kuna C ei ole objektorienteeritud, ei toeta see OOPSi kontseptsioone. C ei toeta funktsiooni ega operaatori ülekoormust. See ei saa kasutada funktsioone struktuuride sees. See ei toeta virtuaalseid funktsioone ja viitemuutujaid ega erandite käitlemist. Samuti ei toeta see viitemuutujaid. Lisaks sellele ei ka C ka kapseldamist ega andmete kindlustamist. Võrdluseks toetab C ++ kõiki neid funktsioone.
Need kaks keelt erinevad ka aadressimälu funktsioonide, sisend-väljundi ja GUI programmeerimise viisi poolest. Näiteks kasutab C mälu eraldamiseks ja eraldamiseks funktsioone calloc (), malloc () ja vaba (), samas kui C ++ kasutab uusi ja kustutab. C kasutab sisendiks ja väljundiks scanf () ja printf (), samas kui C ++ kasutab operaatorit cin >> ja cout <<. C toetab GTK tööriista GUI programmeerimiseks, samas kui C ++ toetab Qt tööriistu GUI programmeerimiseks. Teine erinevus on see, et C nõuab, et deklareeritaks kõik muutujad programmi ülaosas, samas kui C ++-s võib muutujad deklareerida kõikjal programmis.
Lisaks peetakse C + + tavaliselt lihtsamaks õppida, kuna see on kasutajasõbralikum kui C. C ++ -l on ka mitmeid täiendavaid funktsioone, mis lihtsustavad kodeerimist, eriti keegi, kes on C-raamistikus uus. Paljud väidavad siiski, et see on tegelikult oluline. Need kaks keelt erinevad nii palju, et nad võivad tegelikult olla teineteisest sõltumatud kaks erinevat keelt. Üks asi, mida meeles pidada, on see, et C on palju struktureeritum kui C + +, samas kui C ++ oli mõeldud väljendusvõimelisemaks ja abstraktsemaks kui C.
C ja C ++ võrdlus:
C | C ++ | |
Asutatud | Töötanud Dennis Ritchie AT&T Bell Labsis aastatel 1969–1973. | Töötanud Bjarne Stroustrup Bell Labs'is alates 1979. aastast. |
Lähtekood | Vaba formaadis programmi lähtekood | Algselt välja töötatud C programmeerimiskeelest |
Keel | Menetlusele orienteeritud keel | Toetab nii protseduurilisi kui ka objektorienteeritud programmeerimise paradigme; seetõttu nimetatakse seda sageli hübriidkeeleks. |
Lähenemisviis | Järgneb ülalt-alla lähenemine. | Järgneb alt üles lähenemine. |
Suhe | C on C ++ alamhulk. See ei saa käivitada C ++ koodi. | C ++ on C. C ++ -i ülemine osa. |
Sõida | Funktsioonipõhine keel | Objektipõhine keel |
Fookus | Keskendub pigem meetodile või protsessile kui andmetele. | Keskendub pigem andmetele kui meetodile või protseduurile. |
Ehituskivid | Funktsioonid | Objektid |
Märksõnad | Sisaldab 32 märksõna | Sisaldab 52 märksõna |
OOPSi mõisted | Kuna C-keel on protseduurile orienteeritud keel, ei toeta see OOPS-i mõisteid nagu klass, objekt, pärand, polümorfism, andmete peitmine jne. | Objektile orienteeritud keelena toetab C ++ klassi, objekti, andmete peitmist, polümorfismi, pärandit, abstraktsiooni jne. |
Funktsioonid |
|
|
Mälu funktsioonid | Kasutab mälu eraldamiseks ja eraldamiseks funktsioone calloc (), malloc () ja tasuta (). | Kasutab ettevõtjaid uutena ja kustutatakse samal eesmärgil. |
Kapseldamine | Ei toeta. Andmed ja funktsioonid on eraldi ja vabad üksused. | Toetab kapseldamist. Andmed ja funktsioonid on kapseldatud objekti kujul. Objektide klass pakub objekti struktuuri. |
Teabe peitmine | C ei toeta teabe peitmist. Siin on andmed vabad üksused ja neid saab manipuleerida välise koodiga. | Kapseldamine peidab andmed tagamaks, et andmestruktuure ja kasutajaid kasutatakse ettenähtud viisil. |
Andmed | Toetab sisseehitatud ja primitiivseid andmetüüpe. Andmeid ei tagata mitteobjektide orienteerituse tõttu | Toetab nii sisseehitatud kui ka kasutaja defineeritavaid andmetüüpe. Andmed on kaitstud (peidetud) C + + -is |
Tase | Madala tasemega keel | Kesktaseme keel |
Sisend väljund | 'C' keel kasutab scanf () ja printf () sisendit ja väljundit. | „C + +” keel kasutab sisendi ja väljundi jaoks operaatorit cin >> ja cout <<. |
Muutujate deklaratsioon | C nõuab, et deklareeritaks kõik muutujad programmi ülaosas. | C ++-s võib muutujaid enne kasutamist kuskil programmis deklareerida. |
Mitu deklaratsiooni | Lubatud on globaalsete muutujate mitu deklaratsiooni. | Mitme globaalsete muutujate deklaratsioon ei ole lubatud. |
Kaardistamine | Andmete ja funktsiooni kaardistamine on keeruline ja keeruline. | Andmete ja funktsiooni vahelist kaardistamist saab kasutada "Objektide" abil |
GUI programmeerimine | C toetab GTK tööriista GUI programmeerimiseks | C ++ toetab Qt tööriistu GUI programmeerimiseks |
Pärand | Pärand ei ole C-s võimalik | Pärand on võimalik C ++ -is |
Faili laiendamine | Kas faililaiend on .c | Kas faililaiend .cpp |
Vaikimisi päisefail | C keeles kasutatav vaikimisi päisefail on stdio.h | Vaikimisi päisefail, mida kasutatakse C ++, on iosteam.h |
Mõned näited erinevustest C ja C ++ vahel:
Näited | C | C ++ |
Muutuv deklaratsioon | Ainult ülaosas: int i; (i = 10; i <10; i ++) jaoks | Programmis kõikjal: jaoks (int i = 10; i <10; i ++) |
Mälu jaotamine | Malloc: int * x = malloc (suurus (int)); int * x_array = malloc (suurus (int) * 10); | Uus: int * x = uus int; int * x_array = uus int [10]; |
Mälu vabastamine | Tasuta: vaba (x); vaba (x_array); | Kustuta: kustutada x; kustutage [] x_array; |