簡體   English   中英

需要對此代碼進行多態解釋

[英]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_castB*

沒有理由導致編譯失敗(也就是說,缺少AB定義)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM