dynamic_cast هي كلمة مفتاحية لسي ++ وبحت في جوجل فوجدت انها تستخدم للتحويل من صنف أساسي الى صنف مشتق
ولكن مالفائدة من ذلك ؟؟؟؟؟؟؟؟
ممكن مثال حول هذه الكلمة المفتاحية والفائدة منها وشكرا جزيلا لكم
dynamic_cast هي كلمة مفتاحية لسي ++ وبحت في جوجل فوجدت انها تستخدم للتحويل من صنف أساسي الى صنف مشتق
ولكن مالفائدة من ذلك ؟؟؟؟؟؟؟؟
ممكن مثال حول هذه الكلمة المفتاحية والفائدة منها وشكرا جزيلا لكم
#include <iostream>
#include <cstdio>
using namespace std;
struct animal
{
string name ;
};
struct dog : public animal
{
};
struct calculator
{
};
int main()
{
dog aidi; // aidi is a dog breed ( moroccan Atlas Mountain Dog)
animal lion;
dog* lolo = dynamic_cast<dog*>(&aidi); // OK lolo and aidi are dogs
animal* kiki = dynamic_cast<dog*>(lolo);// OK a dog is an animal so kiki is an animal
dog* monster =dynamic_cast<dog*>(&lion);// Error : a lion is not a dog !
calculator* casio =dynamic_cast<calculator*>(&aidi);// error we cant transform a dog to a calculator !!!
return 0;
}هى تستخدم للتحويل بين كائنات او متغيرات من نفس النوع ولكن وقت التشغيل runtime
بعكس static_cast والتى تستخدم لنفس الغرض ولكن فى وقت الترجمة compile time
ولهذا افضل الثانية لان المترجم سيظهر لك المشاكل التى يسببها التحويل ان وجدت
لكن الثانية تتسبب فى مشاكل وقت التشغيل فبالتالى من الصعب تتبعها واكتشافها
بالتوفيق
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳