编辑解决并重新发布为示例程序
场景如下:
类层次结构:
class Base
{
public:
virtual void output() = 0;
private:
int a;
};
class Derived_1 : public Base
{
public:
virtual void output()
{
cout << "Derived_1" << endl;
}
};
class Derived_2 : public Derived_1
{
public:
virtual void output()
{
cout << "Derived_2" << endl;
}
};
实施:
Derived_2* obj = reinterpret_cast<Derived_2*>(new Derived_1());
obj->output();
这将输出“Derived_1”而不是“Derived_2”。我敢肯定这对你们大多数人来说并不新鲜,但这是我在应用程序中创建一些工厂函数时没有想到的。