需要用多态性解释这段代码

时间:2012-02-22 15:51:42

标签: c++ static polymorphism static-methods

我偶然发现了这段代码,我很困惑它是如何编译的,因为A中的一个函数指的是静态B.这也是它的假设。

其中B来自A。

在A.h文件中

static A*   instance();

在B.h

static B* instance() { return dynamic_cast<B*>(A::instance()); }

在B.cpp

A* A::instance()
{
    static B s_instance;
    return &s_instance;
}

省略了类定义等,以减轻代码。

1 个答案:

答案 0 :(得分:1)

  • A::instance()为您提供指向A*的{​​{1}}。始终相同B
  • B为您提供B::instance()A::instance()编辑为dynamic_cast的结果。

没有理由导致编译失败(除了B*A的定义缺失,即)。