• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

C VS C++

  • Ја почнал/а темата
  • #1

HHH

Intern
20 февруари 2008
35
0
Vo dva zbora sto e razlikata megu c i c++ vo odnos na sintaksata i performansite.

Od moite skromni poznavanje so c, znam deka io komandite se razlicni;
printf() && scanf() && puts() && gets()
vs
cin>> && cout<<

A nekoja druga bitna razlika osven OOP?
 

DaciSS

Gaining Experience
3 јануари 2008
949
288
San Francisco
www.linkedin.com
izvadok od predavanje na G.Jovancevski

C
dizajniran od Dennis Ritchie vo 1972 godina, Bell laboratorii
Karakteristiki na C:
- razlikuvawe mali i golemi bukvi; Aa, AA, aA, aa
- ima relativno nisko nivo,
- podesen e za sistemsko programirawe,
- mo`e da se izvr{uva na razni ma{ini i
- da raboti pod opkru`uvawe vo razni operativni sistemi.
1980: C so klasi
1983: C++ nadgradba na C (osnoven jazik za objektno programirawe)
Bjourne Stroustrup
celi:
- da se napravi jazik za seriozno programirawe
- da se napravi jazik za op{ta namena podobar od S
- da poddr`uva apstraktni tipovi na podatoci
- da poddr`uva objektno orientirano programirawe
 

StenmarC

Intern
16 април 2007
716
13
stenmarc.blog.com.mk
C++ e објектно ориентиран, додека C е структурно.
При пишување на поголеми програми, C++ е многу попрегледен и полесно се користи т.е. некои објекти може да се користат повеќе пати, наследувања итн, итн. Читни погоре на ликот е убаво објаснето.
 

Spion

Intern
25 септември 2007
48
4
На кратко: класи, наследување, полиморфизам, по стриктен type safety, оператор overloading, template metaprogramming

На широко,

Наследување: класата која наследува ги добива сите функции и податоци од основната класа. Виртуелните функции лесно можат да се изменат.
Пример употреба - основна класа, MovieDecoder, изведени класи, XVIDDecoder, WMVDecoder. Истите функции за отварање на датотека, истите функции за генерирање raw video stream, но различен начин на декодирање

Полиморфизам: поврзано со виртуелните функции. Во основа, дефинираш покажувач од типот на основната класа,
MovieDecoder* a;
генерираш реален декодер
WMVDecoder* b;
и можеш слободно да речеш
a = b;
a->DecodeMovie();
и ова ќе ја повика функцијата DecodeMovie() od класата WMVDecoder. За декодер на филмови ова не е јасно зошто би се употребило, но во игра на пример можеш да ги чуваш сите непријатели во една array со покажувачи од тип Neprijatel* и за да ги натераш сите непријатели да пукаат (без разлика што се од различен тип - на пример, еден Boss а друг MachineGunGuy) помини со for циклус низ низата, на пример neprijateli->Pukaj(x,y,z); и сите ќе пукаат на својот начин (ако Boss i MachineGunGuy наследуваат од класата Neprijatel) иако имаат различни функции на анимација.

Стриктен type safety: како што и самиот виде во другata тема, int не е enum, една класа неможе да се додели на друга, потребни се специјални конверзии, итн итн.

Operator Overloading: објаснето во другата тема.

template metaprogramming: најмоќниот аспект на C++. Да речеме дека сакаш да имплементираш стек.
class IntStack {
struct list {
int info;
struct list *next;
} stackdata;
public:
int Pop();
void Push(int element);
};
... имплементација...

Што правиш сега ако ти треба stack за chars?
Една опција е да направиш copy-paste на кодот, да смениш сегде кај што има int со char, и да го правиш ова секогаш кога ќе ти треба stack за нов тип на податок (на пример за некоја твоја класа)

Друга опција ти е следнава :)
template <typename T>
class TStack {
struct list {
T info;
struct list *next;
} stackdata;
public:
T Pop();
void Push(T element);
};
... имплементација на Pop и Push

кој потоа во програмот ќе го користиш за било кој тип. Сакаш int stack? нема проблем, само пишуваш
TStack<int> StackOfInts;
char stack?
TStack<char> StackOfChars;
дури и работи од типот...
TStack< TStack<int> > StackOfStacksOfInt;

:)
на кратко, тоа се најголемите разлики меѓу C i C++, а основното објектно ориентирано програмирање не го објаснувам.
 

Нови мислења

Последни Теми

Статистика

Теми
43,545
Мислења
822,963
Членови
28,057
Најнов член
Iamdantes10
На врв Дно