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. #

Leave your comment

Required.

Required. Not published.

If you have one.