Can you summarize the following document?
        
  雖然執行期型態訊息是一個通用的電腦術語,但是通常用來稱呼C++的特質。為了讓C++的指令達到動態指派(codice_1)、型態識別碼(codice_2)操作與例外處理的能力,執行期型態訊息是必須的。  C++語言提供了dynamic_cast和typeid兩種運算子,typeid用於在執行時識別型別資訊,dynamic_cast具有執行時型別識別和型別轉換匹配2個功能。實現方法為每個型別對應一個const type_info型別物件,儲存了這個確切型別資訊。在C++標準標頭檔案codice_3中,type_info類過載了operator=()、operator!=()、name()等成員函式。  dynamic_cast的語法形如: dest和src都必須為指標或者引用。如果執行時src和dest所引用的物件,是相同型別,或者存在is-a關係(public繼承),則轉換成功;否則轉換失敗。dynamic_cast只能用來轉換多型型別(即定義了虛擬函式)的物件的指標或引用。如果運算元是指標,成功則返回目標型別的指標,失敗返回NULL。如果運算元是引用,成功則返回目標型別的引用,失敗丟擲std::bad_cast異常。  dynamic_cast的“執行時型別的轉換匹配”,是通過維護一棵由type_info型別物件作為節點的型別繼承關係的樹,遍歷這棵繼承樹來確定一個待轉換的物件的型別和目標型別之間是否存在is-a關係。  下列是一C++的執行期型態訊息應用範例:

  在類的虛表的前面存放RTTI資料塊的指標。因此,類必須有虛擬函式,才會有RTTI。 資料結構如下:
在程式設計中,所謂的執行期型態訊息(Runtime type information,RTTI)指的是在程式執行時儲存其物件的型態訊息的行為。某些語言實作僅保留有限的型態訊息,例如繼承樹資訊,而某些實作會保留較多資訊,例如物件的屬性及方法訊息。