dynamic_cast hile yapmalı
TYPE& dynamic_cast<TYPE&> (object);
TYPE* dynamic_cast<TYPE*> (object);
dynamic_castAnahtar kelime döküm geçerliliğini sağlamak için bir çalışma zamanı kontrolü yaptıktan, başka bir işaretçi veya referans türünden bir referans noktasını düşürdü.
Gerçek nesne türü olmayan bir türe işaretçi çevirmeye çalışırsanız, çevrimin sonucu NULL olacaktır. Gerçek nesne türü olmayan bir türe gönderme yapmaya çalışırsanız, çevrim bir bad_castistisna atar .
Dynamic_cast'in çalışması için Base sınıfında en az bir sanal işlev olduğundan emin olun.
Wikipedia konusu Çalışma zamanı türü bilgisi
RTTI, yalnızca polimorfik sınıflar için kullanılabilir, yani en az bir sanal yöntemi vardır. Uygulamada, bu bir sınırlama değildir çünkü temel sınıfların, bir temel işaretçiden silindikleri takdirde, türetilmiş sınıfların nesnelerinin düzgün temizleme gerçekleştirmesine izin vermek için sanal bir yıkıcıya sahip olması gerekir.
code void *p1 = new int(); void *p2 = new double(); void f(void *p) {....code goes here } f(p1) should print int... f(p2) should print double...