Как работает dynamic_cast
Не совсем могу понять для чего нужен и как работает dynamic_cast
class Base
{
public:
virtual ~Base() = default;
virtual void p()
{
std::cout << "Base class";
}
};
class Derived : public Base
{
public:
virtual ~Derived() = default;
void p() override
{
std::cout << "Derived class";
}
};
int main()
{
Derived *b = new Derived();
if (dynamic_cast<Base*>(b))
b->p();
return 0;
}
Разве не должно вывести Base class?