Dědění

1) Pomocí bázové a zděděných tříd vyzkoušejte mechanizmus virtuálních a nevirtuálních metod.

napište bázovou třídu, která bude mít virtuální a nevirtuální metody pro tisk. Vytvořte tři zděděné třídy – první bude mít přetíženy obě tiskové metody, druhá bude mít přetíženu pouze virtuální a třetí přetíží pouze nevirtuální. Vytvořte od každé třídy jeden objekt. Pro každou třídu vytvořte ukazatele (ty, které dávají smysl) a inicializujte je vytvořenými instancemi dané třídy a instancemi předků. Pro všechny takto vytvořené objekty a ukazatele volejte neviruální a virtuální metodu a sledujte co se děje.



2) Prostudujte posloupnosti volání konstruktorů a destruktorů (virtuálních i nevirtuálních).

Napište si bázovou třídu, a dvě třídy zděděné. Objekt jedné zděděné třídy je zároveň prvkem druhé zděděné třídy. Napište příslušné konstruktory a destruktory a sledujte pořadí jejich volání při vytváření prvků jednotlivých tříd (bázové i zděděných). Co se děje jsou-li destruktory (ne)virtuální.



================

Motivace (orientační pomocná kostra programu):

clas A{

A () {cout << „konstruktor A“;}

virtual ~A() {cout << „destruktor A“;} // zkusit s virtual a bez virtual

virtual TiskV()

Tisk ()

}



class B:A {

B()

~B()

virtual TiskV

}

class C:A {

C()

~C()

A aa

B bb

Tisk()

}

A aa

B bb

C cc

C *pc1 = &aa, *pc2 = &bb , *pc3 = &cc;

pc1->TiskV()

pc1->Tisk()

pc2-> …

pc3-> ...



Poslední upravy 2008-07-30







Prostudujte si přiložený program. Nakreslete si diagram vazeb a proměnných, prostudujte princip volání konstruktorů a destruktorů a jeho vazbu na tento diagram.

Program popisuje situaci, kdy máme velký kontejner (například loď pro přepravu nákladů) a na ni můžeme nakládat různé objekty. Potřebujeme ovšem zjistit jestli není loď přetížená. Proto musíme zjišťovat celkovou hmotnost, a tak musí všechny objekty být schopny odpovědět na otázku, jaká je jejich hmotnost. Výhodou také je, pokud při tomto zjišťování můžeme se všemi různými objekty postupovat jednotně (například v rámci jednoho cyklu a jedné proměnné), tak ,že nebudeme vědět koho se ptáme, ale odpověď bude vždy správná (Různé objekty „nasypeme“ například do pole a potom už se ptáme jen na to co nás zajímá. Všechny, byť různé, objekty musí umět odpovědět).



Zdrojový text