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