• Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

dynamic_cast i reinterpret_cast kaj apstraktni klasi

mac-ufs

Intern
23 април 2008
611
19
svakja li nekoj kako se upotrebuvaat ovie operatori...mislam znam definicija ali ednostavno ne mozam da svatam kako se koristat

aj nekoj ako moze so nekoe pomalo primerce da mi objasni sto znacat ovie operatori
 

lizardlabs

Intern
23 август 2007
58
1
dynamic_cast se koristi kako bezbeden nacin za konverzija na pokazuvaci ili referenci na izvedenata klasa vo pokazuvac ili referenca na osnovnata klasa, no sepak objektot da ostane validen objekt od izvedenata klasa (polimorfizam). Dokolku ovaa konverzija ne e vozmozna se "frla" bad_cast exception. Pr:
Код:
class CBase { };
class CDerived: public CBase { };

CBase b; CBase* pb;
CDerived d; CDerived* pd;

pb = dynamic_cast<CBase*>(&d);     // ok: derived-to-base
pd = dynamic_cast<CDerived*>(&b);  // wrong: base-to-derived
Za konverzija na validniot objekt od osnovnata vo objekt vo izvedenata klasa treba se koristi static_cast


reinterpret_cast se koristi za konverzija na bilo koj tip na pokazuvac vo bilo koj drug. Ne se pravi nikakva validacija. Pr:
Код:
class A {};
class B {};
A * a = new A;
B * b = reinterpret_cast<B*>(a); // ke mu dojde kako B* b = (B*) a;

Ova e najcestata primena na ovie operatori co C++.
 

mac-ufs

Intern
23 април 2008
611
19
za reinterpret_cast mi e jasno za ova ke mi stane samo da ja rastumacam u zadaca...u sekoj slucaj fala za primerov pomogna :D
 

Нови мислења

Последни Теми

Онлајн членови

Статистика

Теми
43.845
Мислења
911.527
Членови
32.578
Огласи
808
Најнов член
Vaskou
На врв Дно