[英]Need explanation on this code with polymorphism
我偶然发现了这段代码,由于它来自A的一个函数引用了静态B,所以我对它的编译方式感到非常困惑。这也是它应该做的。
其中B源自A。
在Ah文件中
static A* instance();
在Bh
static B* instance() { return dynamic_cast<B*>(A::instance()); }
在B.cpp
A* A::instance()
{
static B s_instance;
return &s_instance;
}
省略了类定义等以简化代码。
A::instance()
给您一个A*
,它指向一个B
始终相同B
B::instance()
给出A::instance()
的结果, dynamic_cast
到B*
。 没有理由导致编译失败(也就是说,缺少A
和B
定义)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.