Professional Documents
Culture Documents
kada želimo napisati funkciju za našu klasu, koja vraæa kao rezultat
poziva uvijek nad nekim objektom, i vraæa tu neku njegovu osobinu (naravno,
Medutim, ako nam treba funkcija koja vraæa neki podatak koji nije toliko direktno
daje kao rezultat zbir vektora, onda je prirodnije koristiti obiènu funkciju, tj.
funkciju koja nije funkcija èlanica, nego prijateljska funkcija, ili u najgorem sluèaju
Vektor::ZbirVektora(a,b);
Pod kojim uvjetima se može napraviti niz ciji su elementi primjerci neke klase?
Nizove èiji su elementi primjerci neke klase moguæe je bez problema deklarirati
jedino ukoliko ta klasa uopæe nema konstruktore (što je vrlo loša praksa), ili
za c=50; preklopljeni operator dodjele oèekuje drugi objekat klase proba kao parametar, ali
mi mu šaljemo int 50. Sada se nad parametrom a poziva konstruktor (ako postoji), koji
operator dodjele se koristi kada god je objekat lijevo od operatora dodjele osim kod inicijalizacije.
Tri razloga zbog kojih se umjesto nizova ciji su elementi primjerci neke klase radije
koriste nizovi ciji su elementi pokazivaci na primjerke neke klase.
1. zato što je lakše, brže i efikasnije izvršiti sortiranje pokazivaša, nego sortiranje glomaznih
objekata.
3. zato što je moguæe praviti i velike nizove pomoæu petlji i new, èak iako imamo
neki drugi konstruktor, a npr: nemamo konstruktor bez parametara. U suprotnom bismo trebali
raditi nabrajanje
4. zato što je moguæe formirati heterogene nizove, pomoæu pokazivaèa na bazne klase.
nemaju kontruktor bez parametara, jer takav konstruktor za njih nema smisla, tj.
moraju reference na neke objekte, jer referenca za razliku od pokazivaèa mora odmah
ali ako su int ili char, može i odmah (u tom sluèaju mora se koristiti =, a ne zagrade).
atributi static TIP naziv_varijable, ne mogu unutar inicijalizacijske liste, nego vani,
**************************************************************************
Pitanja:
moze li neko ko zna odgovore na ova pitanja koja se moraju znati za usmeni da ih postavi na grupu
:D
2.pod kojim uvjetima se može napraviti niz ciji su elementi primjerci neke klase,
5.nabrojati barem tri razloga zbog kojih se umjesto nizova ciji su elementi primjerci neke klase radije
dijela ispita
/////////////////////////////////////
1. Funkcije clanice su dio klasa i pozivaju se uvijek nad objektom. Dakle, prvi argument je implicitan i
moze se uzeti preko pokazivaca this. Prijateljske funkcije su eksterne funkcije, dakle nisu dio klase, ali
imaju prava pristupa privatnim atributima ukoliko objekte primaju kao argumente. Friend funkcije se
koriste kao obicne funkcije.
2. Samo ukoliko postoji konstruktor bez parametara (makar ga vi rucno napisali ili vam compiler
generirao).
3. Konstruktor kopije se uvijek poziva na inicijalizaciji objekta (dakle, nad objektom koji ranije nije
inicijaliziran), dok se preklopljeni operator dodjele koristi iskljucivo nad vec inicijaliziram objektima.
vector<int> v2 = v1; //Poziva se konstruktor kopije bez obzira sto se sintaksno koristi operator
dodjele, jer v2 nije ranije inicijaliziran
Ne mogu se sjetiti sta se sve ne moze inicijalizirati tu. Vjerovatno nista sto koristi neke druge funkcije
za inicijalizaciju (npr. strcpy), ali nisam siguran stvarno. Provjeri to.
5. Peti dio:
1. Manje je zauzece memorije - Ti tek alociras prostor za objekat kada bude potreban.
2. Operacija zamjene (swap) nad kolekcijom je skoro besplatna i bez obzira na velicinu objekta uvijek
isto kosta (zamijenjujes 2 varijable koje imaju velicinu 4 ili 8 byte-a), pa je sortirano jako brzo.
3. To je jedini moguci pristup kada objekti iz kolekcije ne podrzavaju konstruktor bez argumenta -
ono isto sto je vezano za trece pitanje, dakle nije moguce tada uopste napraviti taj niz).
parametrima
Klasa niz[5]={Klasa(parametri),Klasa(parametri)....itd}
incijalizaciji s time
Klasa b=nesto...;
Klasa a(b);
koliko
Prefiksni ++P
Postfiksni(Sufiksni) ++
P++
Virtual
Virtual je nesto kao cigo ako imate nesto sto je
se prodati.
zapravo...
Sta je polimorfizam
POlimorfizam je izmislio Bosnjo
stave razni primjerci klasa koji su nasljedjeni iz jedneb bazne klase...s time da se pri svakom uzimanju
nekog primjerka iz kutije smatra da je on prvobitno tip bazne klase...pa se tek ustanovi koji je zaista
tip(zovete cigu .vritual)