# Zkouska 06.02.2012

<{ForumPost(poster="Davpe", timestamp=2012-02-06 17:45:56)}>
Vetsina otazek ze socketky, ale obcas se tam objevi novinka, tady mate utrzky toho co si pamatuju.  
  
1) Mame tridu Rectangle odvozenou od base. Mame kod:  
vector<Base *> a;  
Jak vlozit do tohoto pole Rectangle?  
Mel jsem za A: 

    {Rectangle r; a.push_back(&r);}

Odpoved mi byla zakrouzkovana a dostal jsem za ni 1 trestny bod. Takze mozna je tam spravne jeste nejaka varianta.  
  
2)

    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);
    }
    

Hodnota, kterou vraci g? (24)  
  
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

    A x; B y;
    A *p = &x;
    A *r = &y;
    B *q = &y;
    

A pod tim byly 4 otazky na zaskrtavani. Vzdy se volala nejaka funkce (p->f apod.) a melo se zaskrtnout, jaka bude vysledna hodnota nebo "chyba"). Jen bych chtel podotknout, ze promenne p, q ukazuji na sve tridy, takze tam neni zadny trik, nevola se nic virtualniho, zavola se jen clenska funkce.  
  
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 :)
<{/ForumPost}>

<{ForumPost(poster="kolage", timestamp=2012-02-06 22:26:04)}>
Ja mel napr. jeste podobnou otazku te prvni - akorat kontejner byl std::vector<Base>, takze se tam nedaly vlozit zadni potomci. Jeste bych se zeptal - uz mate zapsane znamky?
<{/ForumPost}>

<{ForumPost(poster="Davpe", timestamp=2012-02-06 22:31:34)}>

 > kolage wrote: Jeste bych se zeptal - uz mate zapsane znamky?
 Ne. Snad nebudu litovat, ze jsem si to nenechal zapsat do indexu :) (info pro budouci, index s sebou, zapisuje to rovnou ;) )
<{/ForumPost}>

<{ForumPost(poster="vojta_vorel", timestamp=2012-02-06 23:33:26)}>
A především, zapisuje to i těm co ještě nemají zápočet! Nevěděl jsem to a málem mě to stálo život když jsem rychle lezl pro index skrz zábradlí v posluchárně  :)
<{/ForumPost}>

