需要用多态性来解释这个代码

Need explanation on this code with polymorphism

本文关键字:代码 解释 多态性      更新时间:2023-10-16

我偶然发现了这段代码,我对它的编译方式很困惑,因为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;
}

为了简化代码,省略了类定义等。

  • A::instance()为您提供指向BA*。始终是相同的B
  • B::instance()给出了A::instance()dynamic_castB*的结果

这没有导致编译失败的原因(除了缺少AB的定义之外)。