次のコードのような状況で、ポリモーフィック クラスで static_cast を使用した後、仮想関数を安全に呼び出すことができますか、それとも UB ですか?
#include <iostream>
class Base
{
public:
virtual void foo() { std::cout << "Base::foo() \n"; }
};
class Derived : public Base
{
public:
virtual void foo() { std::cout << "Derived::foo() \n"; }
};
int main()
{
Base* derived = new Derived;
Derived* _1 = static_cast<Derived*>(derived);
_1->foo();
}