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