[英]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.