To sta takoimenovana c-jevska ukaza. Ko narediš en objekt, se ta objekt naseli v pomnilnik. Nekje v pomnilniku se nahaja naš sklad. Moti nas številka max_sklad, ki je v naprej določena. Včasih želimo, da je ta majhna, včasih pa velika.
Definirali bomo, da skladišče ne bo več skladišče, ampak kazalec
na skladišče.
int * ptrSkladisce;
Zvezdica ,,*`` v glavi funkcije pomeni referenco na objekt;
tu pa to pomeni, da je kazalec na objekt tipa int.
Ko v stari izvedbi ustvarimo sklad, se nam prostor za skladišče sam od
sebe rezervira. Funkcija, ki jo bomo napisali, nam bo to naredila po
naših potrebah: n - zlogov pomnilnika.
Sklad::Sklad() {
ptr_Skladisce= (int*)malloc (max_Sklad * sizeof(int));
} //Sklad
Sklad::~Sklad() {
free(ptr_skladisce); // s tem smo vrnili, kar smo dobili
} //~Sklad
Pri malloc je int osnovni tip spremenljivke, ki bo ustvarjen.
Velikost tega tipa je sizeof(int) zlogov - ena spremenljivka
zasede toliko zlogov pomnilnika. V našem primeru jih bomo dobili
max_Sklad krat toliko.
Kako s tem delati? Napisali bomo novo funkcijo z našim novim skladiščem.
void Sklad::Nalozi(int element) {
ptr_skladisce[zadnji]= element;
zadnji ++;
} //Nalozi
Podrobno si lahko pogledate na:
V c-ju in c++ so polja čudna stvar - ne obstajajo. Polje je predstavljeno kot kazalec na prvi element polja. Če hočeš priti do zadnjega, prišteješ temu kazalcu velikost polja. Da bo pravilno delal, mora biti spremenljivka kazalec na prvi element polja.