Zkouska 06.02.2012

Davpe at 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.

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)

  1. 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.

  1. 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 :)

kolage at 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?

Davpe at 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 ;) )

vojta_vorel at 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ě :)