Я довольно запутался с ключевым словом dynamic_cast
в С++.
struct A {
virtual void f() { }
};
struct B : public A { };
struct C { };
void f () {
A a;
B b;
A* ap = &b;
B* b1 = dynamic_cast<B*> (&a); // NULL, because 'a' is not a 'B'
B* b2 = dynamic_cast<B*> (ap); // 'b'
C* c = dynamic_cast<C*> (ap); // NULL.
A& ar = dynamic_cast<A&> (*ap); // Ok.
B& br = dynamic_cast<B&> (*ap); // Ok.
C& cr = dynamic_cast<C&> (*ap); // std::bad_cast
}
в определении говорится:
Ключевое слово
dynamic_cast
выполняет привязку данных из одного указателя или ссылки тип к другому, выполняя проверку времени выполнения, чтобы гарантировать достоверность литых
Можно ли написать эквивалент dynamic_cast
С++ в C, чтобы я мог лучше понять вещи?