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