1) Mame tridu Rectangle odvozenou od base. Mame kod:
vector<Base *> a;
Jak vlozit do tohoto pole Rectangle?
Mel jsem za A:
Kód: Vybrat vše
{Rectangle r; a.push_back(&r);}
2)
Kód: Vybrat vše
int a;
int f(int p, int q) {
a = p+q;
p = a*q;
return p+a;
}
int g() {
a = 3;
return f(a,a);
}
3)
Dve tridy: A, B kde A je predek B. Kazda mela ruzne funkce (i virtualni), ktere vracely nejake cislo nebo jinou funkci.
Mame kod
Kód: Vybrat vše
A x; B y;
A *p = &x;
A *r = &y;
B *q = &y;
4) PES. SAVEC a ZVIRE
Mame tyto tri tridy a hiearachie je ZVIRE->SAVEC->PES. Pak byly 4 moznosti na zaskrtavani (a byly docela zdrojem chyb), zda dana konstrukce je spravna, neprojde prekladacem ci projde prekladacem ale stane se neco nepekneho (memory leak). Myslim, ze zadna z tech co ta byly neprosla prekladacem
Priklady konstrukci
ZVIRE azor = *new PES;
(tohle by podle me mel byt splicing a prekladacem by to melo projit, ale vznikl by memory leak)
PES azor = * new ZVIRE;
(neprojde prekladacem)
PES & azor = & new PES;
(neprojde prekladacem)
(celkove si myslim, ze pokud se na prave strane vyskytuje konstrukce "& new TRIDA" tak to prekladacem nemuze projit nikdy, protoze new by mel vracet adresu na pametovy blok a brat z adresy jeste jednou adresu nejde. takove konstrukce tam byly dve).
Pripadne me nekdo opravte/ potvrdte to :)