Virtual destruktor u dedicnosti – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Virtual destruktor u dedicnosti – C / C++ – Fórum – Programujte.comVirtual destruktor u dedicnosti – C / C++ – Fórum – Programujte.com

 

fnenks+1
Stálý člen
17. 7. 2011   #1
-
0
-

   

#include <iostream>
using namespace std;

class Savec
{
public:
	Savec():jehoVek(1) { cout << "konstuktor Savec..\n"; }
	virtual ~Savec() {}
	virtual void Promluvit() const { cout << "Savec hovori!\n"; }
	
protected:
	int jehoVek;
};

class Pes : public Savec
{
public:
	void Promluvit()const { cout << "Haf!\n"; }
};

class Kocka : public Savec
{
public:
	void Promluvit()const { cout << "Mnau!\n"; }
};

class Kun : public Savec
{
public:
	void Promluvit()const { cout << "Ihaha!\n"; }
};

class Vepr : public Savec
{
public:
	void Promluvit()const { cout << "Chrocht!\n"; }
};

int main()
{
	Savec *toPole[5];
	Savec *ukz;
	int volba, i;
	for (i=0; i<5; i++)
	{
		cout << "(1)pes (2)kocka (3)kun (4)vepr: ";
		cin >> volba;
		switch(volba)
		{
		case 1: ukz = new Pes; break;
		case 2: ukz = new Kocka; break;
		case 3: ukz = new Kun; break;
		case 4: ukz = new Vepr; break;
		default: ukz = new Savec; break;
		}
		toPole[i] = ukz;
	}
	for (i=0;i<5;i++)
		toPole[i]->Promluvit();
		
	
	system("pause");
	return 0;
}

Cely kod jsem pochopil az na jednu vec. Proc je u destruktoru virtual? Program funguje stejne i kdyz tam virtual neni, takze by me zajimalo, k cemu to je, popr. zda li se to neda k necemu vyuzit..?

Nahlásit jako SPAM
IP: 88.101.84.–
KIIV
~ Moderátor
+43
God of flame
17. 7. 2011   #2
-
0
-

#1 fnenks
Protože jednotlivé odvozené třídy mohou obsahovat jiná data - každá třída pak po sobě musí uklidit nějak jinak.

Tady to nehraje roli, ale až tam budeš mít dynamicky alokovanou paměť, tak už se to pravděpodobně projeví (ať už jako únik paměti, padání programu, přepisování paměti, co ti nepatří...)

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 78 hostů

Podobná vlákna

Problém s dědičností — založil Blujacker

Destruktor — založil Gadael

Konstruktor / Destruktor — založil Minko

Destruktor třídy — založil Blujacker

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý