簡體   English   中英

C ++中的運行時類型信息

[英]Run-time type information in C++

什么是C ++中的運行時類型控件?

它使您能夠在運行時識別對象的動態類型。 例如:

class A
{
   virtual ~A();
};

class B : public A
{
}

void f(A* p)
{
  //b will be non-NULL only if dynamic_cast succeeds
  B* b = dynamic_cast<B*>(p);
  if(b) //Type of the object is B
  {
  }
  else //type is A
  { 
  }
}

int main()
{
  A a;
  B b;

  f(&a);
  f(&b);
}

它不僅僅是關於dynamic_cast,而是整個RTTI的一部分。 學習RTTI的最佳地方是Bjarne Stroustrup的C ++編程語言第15.4節

它是dynamic_cast功能 - 您的代碼可以在運行時檢測給定的指針或引用是否真的綁定到您期望的類型的對象。

正確的名稱是運行時類型信息(RTTI)

您可以使用Interface *並“詢問”c ++指針指向的對象類型。 據我所知,這依賴於運行時元信息,需要幾個周期來存儲和搜索這些信息。

查看“typeid”關鍵字。 它提供了最神奇的。

dynamic_cast的只使用 RTTI,typeid的用的std :: TYPE_INFO在我看來更像是“動真格”。

暫無
暫無

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

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