【发布时间】:2012-10-22 17:32:43
【问题描述】:
在多态类上使用 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();
}
【问题讨论】:
-
我认为,如果您将
foo()设为非虚拟,这个问题会更有意义。
标签: c++ casting static-cast