You are on page 1of 11

C vs C++

Proirenja programskog jezika C


- Pored komentara /* i */ u jeziku C++ mogu da se koriste komentari koji poinju
sa //.
Ovi komentari se zavravaju na kraju reda bez posebnog oznaavanja zavretka.
- Spisak slubenih rei, koje su rezervisane rei i kao takve ne mogu da se koriste
kao identifikatori u programima, produenje za 30 novih rei.
- Ne preporuuje se korienje identifikatora koji poinju sa dva znaka
podvueno (__).
U standardnoj biblioteci funkcija jezika C++ koriste se takvi identifikatori.
- Treba izbegavati i identifikatore koji poinju jednim znakom podvueno (_) jer
se takvi identifikatori koriste u standardnoj biblioteci funkcija jezika C.

Proirenja programskog jezika C


- Tip bool spada u grupu celobrojnih tipova, i postoji automatska konverzija
izmeu tipa bool i numerikih tipova.
Kada se koristi u izrazima, logika vrednost false se pretvara u celobrojnu
vrednost nula, a true u jedan.
Ako se promenljivoj tipa bool dodeljuje numerika vrednost, vrednost nula se
pretvara u false, a bilo koja nenulta vrednost u true.
- Znakovne konstante, na primer A, u jeziku C++ su tipa char dok u jeziku C
su tipa int.
To dovodi do toga da se A i 65 razliito tretiraju, bez obzira to u sluaju
korienja ASCII koda imaju istu brojanu vrednost.
U jeziku C te dve vrednosti ne mogu da se razlikuju ni pod kojim uslovima

Proirenja programskog jezika C


- U jeziku C++, dodavanjem modifikatora const na poetku naredbi za
definisanje podataka dobijaju se prave konstante, pod uslovom da su
inicijalizatori konstantni izrazi.
Tako uvedeni identifikatori predstavljaju simbolike konstante koje mogu da
se koriste i na mestima na kojima se izriito trae konstante.
- Deklarativne naredbe u jeziku C++ smatraju se izvrnim naredbama i mogu
da se koriste bilo gde u programu gde su naredbe dozvoljene, a ne samo na
poetku pojedinih blokova.
Doseg uvedenih identifikatora se protee od mesta definisanja do kraja
bloka unutar kojeg su definisani.
- Identifikatori nabrajanja, struktura i unija u jeziku C++ mogu da se koriste
kao identifikatori tipa bez slubenih rei enum, struct, odnosno union, pod
uslovom da su jedinstveni u svojim dosezima.

Proirenja programskog jezika C


- Pokazivau na podatke poznatih tipova u jeziku C++ ne moe da se dodeli
vrednost generikog pokazivaa (void*).
- U jeziku C argumenti su prenoeni funkciji iskljuivo po vrednosti. Da bi neka
funkcija mogla da promeni vrednost neke spoljne promenljive, trebalo je preneti
pokaziva na tu promenljivu.
- U jeziku C++ mogu je i prenos po referenci. Referenca ili upuiva je
alternativno ime za neki podatak. Reference mogu da budu formalni argumenti i
vrednosti funkcije.
- Za potrebe dodele memorije u dinamikoj zoni memorije u vreme izvravanja
programa, u jeziku C++ uvedeni su operatori new i delete.
Veliina dodeljenog prostora pomou operatora new automatski se odreuje na
osnovu veliine podatka (kod funkcija iz C jezika malloc, calloc i realloc, veliina
mora da se navede, obino primenom operatora sizeof).

Proirenja programskog jezika C


- Za vrlo male funkcije, pozivanje funkcije i povratak iz funkcije moe da traje
znatno due od izvravanja samog sadraja funkcije.
Za takve funkcije je efikasnije da se telo funkcije ugradi neposredno u kod na
svakom mestu pozivanja.
To, pored utede u vremenu, esto znai i manji utroak memorije.
Treba dodati modifikator inline na poetku definisanja funkcije.
U jeziku C nije bilo mogue definisati dve funkcije sa istim imenom.
Mehanizam preklapanja imena funkcija (eng. function overloading) u jeziku
C++ omoguava da se srodnim funkcijama daju ista imena. Pod preklapanjem
imena funkcija podrazumeva se definisanje vie funkcija sa istim
modifikatorima.
Sve te funkcije mora da se meusobno razlikuju po broju i/ili tipovima
argumenata na nain koji obezbeuje njihovu jednoznanu identifikaciju.

Proirenja programskog jezika C


Imenski prostori (namespace) slui za grupisanje globalnih imena u velikim
programskim sistemima u vie dosega.
Objekat je neko podruje u memoriji podataka tokom izvravanja programa.
To moe biti eksplicitno definisana promenljiva (globalna ili lokalna), ili privremeni
objekat koji nastaje pri izraunavanju izraza.
Objekat je primerak nekog tipa (ugraenog ili klase), ali ne i funkcije.
C++ je strogo tipizirani jezik, odnosno svaki objekat ima tano odreeni tip.
Kada se oekuje objekat jednog tipa, a koristi objekat drugog tipa, potrebno je
izvriti konverziju tipova.

Proirenja programskog jezika C


Izlaz na monitor je tok podataka (eng. data stream), odnosno niz karaktera.
Tok cout (konzolni izlaz "console output" i ita se kao "see-out") predstavlja
standardni izlazni tok, koji se automatski prikazuje na korisnikovom monitoru
kada se C++ program izvrava.
Podaci se mogu poslati na izlazni tok cout koristei operator umetanja (eng.
insertion operator), <<, koji se ita kao "poslato je" ili "uzima se". String (niz
karaktera) se postavlja unutar znaka navoda.
Zavretak linije i skok u novi red se ostvaruje pomou endl (eng. end of line) i
odgovara specijalnoj sekvenci '\n'.
Poslednja naredba return zavrava izvrenje funkcije main() i alje ceo broj ija
je vrednost 0 operativnom sistemu da bi pokazala da se program zavrio
normalno.

Proirenja programskog jezika C


Heder fajlovi obino sadre informacije o konstantama, funkcijama, klasama i
drugim C++ elementima koji se esto pojavljuju u C++ programima.
Heder fajl iostream (input/output stream), je jedan od standardnih skupova
sistemskih heder fajlova kojim je svaki od C++ kompajlera snabdeven.
Heder fajl iostream sadri informacije o standardnim ulazno/izlaznim
tokovima.
Treba obratiti panju da se pretprocesorska direktiva
#include <iostream>
ne zavrava sa ; zato to pretprocesorska direktiva nije naredba.

Proirenja programskog jezika C


Kompajler C++ jezika koristi vie fajlova da bi napravio C++ program koji se
moe izvriti.
Uz izvorni fajl, koji je program koji pie programer, kompajler koristi jedan ili
vie heder fajlova, kao to je iostream i biblioteke standardnih i korisniki
definisanih funkcija za kreiranje izvrnog programa.
Kako je mogue da vie programera uestvuju u pisanju koda, mogue je da
koriste ista imena za potpuno razliite stvari.
Ovo dovodi do kompajlerske greke. Da bi se to izbeglo, C++ obezbeuje
mehanizam prostora imena namespace, koji deli imena koje programeri mogu
da koriste na dosege imena.

Proirenja programskog jezika C


Direktiva
using namespace std;
dozvoljava da koristimo u naim programima cout (i kasnije cin) bez potrebe
da piemo kod kao std::cout (i std::cin).
Direktiva using u osnovi kae da moemo direktno da koristimo sva imena
unutar std prostora imena (cout i cin su dva takva imena).
Sva standardom predviena zaglavlja sve globalne identifikatore stavljaju u
imenski prostor std.
Standardom je predviena mogunost da uskladitavanje standardnih
zaglavlja ne bude (mada moe) u vidu tekstualnih datoteka.
Zbog toga imena standardnih zaglavlja ne sadre proirenja imena .h, to je
uobiajeno u jeziku C.

You might also like