首页 > 解决方案 > 将 Base 的实例向下转换为没有成员的派生类

问题描述

我继承了(不是双关语)一些具有以下内容的代码:

class Base {
public:
    static Base* GetInstance() { 
        return pInstance; //static member (initialized as Singleton with new Base(); 
    }
    void Foo();
};


class Derived : public Base {
    Derived() {}
public:
    Bar();
};

它的用法如下所示:

((Derived*)Base::GetInstance())->Bar();

这是定义的行为吗?

它适用于 MSVC,我理解为什么可以定义它,但我不知道如何验证它是否是(除了寻求一些智慧)。

标签: c++castingpolymorphism

解决方案


推荐阅读