السلام عليكــم ورحمـة الله وبركاتــه ،،
#include <iostream>
#include <typeinfo>
using namespace std;
struct A { virtual ~A() {cout<<"AA";} };
struct B : A { };
struct C { };
struct D : C { };
int main() {
B bobj;
A* ap = &bobj;
A& ar = bobj;
cout << "ap: " << typeid(*ap).name() << endl;
cout << "ar: " << typeid(ar).name() << endl;
D dobj;
C* cp = &dobj;
C& cr = dobj;
cout << "cp: " << typeid(*cp).name() << endl;
cout << "cr: " << typeid(cr).name() << endl;
B * b2 = dynamic_cast<B*>(ap); /* NULL */
system("pause");
return 0;
}
الحين لما سويت له رن
طلع لي الاتي
ap: B
ar: B
cp: C
cr: C
ليش طلع ap
من نوع B
مع انه بوينتر من كلاس
A
السؤال الثاني
الحين اذا شلت
virtual ~A() {cout<<"AA";
تصير
B * b2 = dynamic_cast<B*>(ap); /* NULL */
ايرور يعني مايمشي الداينمك كاست
ليش ووش علاقتهم ببعضوشكرا جزيلا :wub: