C ir C++ skirtumai bei panašumai
by Liudas Sodonis on March 30, 2007
Šen, na ir dar porą kartų, su grupioku susiginčijom kuo skiriasi grynas C nuo C++. Aš sakiau, kad skiriasi daug kuo, o grupiokas, kad nieko (aišku be to kad objektinis). Truputi pagūglinau ir radau tai ką reikia
Taigi C buvo sukurta 1972 metais Dennis’o Ritchie iš Bell Lab naudoti UNIX’e.
1983 metais Bjarne’as Stroustrup‘as sukūrė C++, kuris buvo pavadintas “C su klasėmis”.
Skirtumai:
- C neturi klasių, objektų ir viso gėrio ką jos suteikia pvz: templaitų. (Viskas paremta funkcijom)
- C struktūra neturi metodų.
- C I/O (input/output) yra realizuota per bibliotekos funkcijas (pfintf, scanf, fopen…)
- C nepaliko funkcijų persiliejimo ( negali būti dvi funkcijos su tais pačias vardais)
- C neturi neapibrėžtų kintamųj
- C neturi new, delete, reikia naudoti malloc() ir free() bibliotekines funkcijas norint susitvarkyti su atmintim.
Panašumai:
- Esami (“įkompiliuoti”) duomenų tipai.
- Pagrindinės struktūros ( if, while, do, for ..)
- Operatoriai : + , -, *, /, =, ==, !=, <, >, +=, ++.
Paprasčiausia C programėlė:
#include <stdio.h>
int main(void)
{
printf(„Sveikas, Pasauli!\n“);
return 0;
}
Paprasčiausia C++ programėlė:
#include <iostream>
int main()
{
std::cout << “Sveikas, Pasauli!” << std::endl;
}
Skirtumas aiškus
Gal kas dar turi ką pridėti?
7 comments
Galiu pridėti tik mažą komentarą. Ech senai su C kalbom bepgoramavau.. pasiilgau
anyway C gera prdžia (pusė darbo) po kurios galima džiaugtis C++ privalumais
by Slave on 2007-03-31 at 00:23. #
ten turėjo būti pliusiukai
“C privalumais” pataisyk Liudai
by Slave on 2007-03-31 at 00:25. #
ne ne, turėjau galvoje būtent skirtumus, dabar man svarbūs yra jie
by Liudas on 2007-03-31 at 06:49. #
Trys esminės naujovės C++’e yra: klasės, templeitai, exceptionai. Visa kita, kaip kad funkcijų/operatorių overloadinimas, referencai, new/delete ir pan., iš esmės yra priedai prie to, arba tiesiog syntactic sugar.
O dėka tų trijų naujovių, programavimas C++’u yra totaliai kitoks, nei C: jei C reikėjo naudoti pointerius ir standartines funkcijas, dabar reikia naudoti stl’ą – konteinerius, iteratorius, algoritmus, na ta prasme, jei nori išnaudoti viską, ką duoda C++:>
Kiti manjakai (me included) žengia dar toliau ir naudoja bleeding edge templeitines bibliotekas, kaip kad boost’o lambda, bind ir t.t.
Apibendrinant, tie dalykai savo ideologija skirias kaip diena ir naktis, o kas sako, kad nesiskiria – nėra matęs normalaus C , matyt.
by Saulius on 2007-03-31 at 08:18. #
ei wtf, kur pliusai dingo :[
by Saulius on 2007-03-31 at 08:42. #
P.S. mano vienas komentaras yra “moderuojamas”, todėl čia tiek nesusipratimų
Per skype mėginau su tavimi susisiekti, tačiau nepavyko…
by Slave on 2007-04-01 at 21:57. #
o tai viską sutvarkiau ir supratau
šią sav. kaip ir be skype gyvenu, nžn kodėl ;>
by Liudas on 2007-04-01 at 22:02. #