將轉型
C + + 語言提供如果類別衍生自基底類別,包含虛擬函式,該基底類別型別的指標可用來呼叫衍生的類別物件所位於的虛擬函式的實作。 包含虛擬函式的類別有時稱為 「 多型類別 」。
在衍生的類別完全包含的所有基底類別衍生的定義,因為它,則任何這些基底類別的類別階層架構中向上的指標轉換。 指定的基底類別的指標,則可能是安全的階層架構下層指標轉換。 如果所指向的物件實際上是衍生自基底類別型別,是安全的。 在此情況下,實際的物件即為 「 完整物件 」。 在基底類別指標即移向 [完整的物件的 「 子物件 」。 例如,假設類別階層架構,如下圖所示。
類別階層架構
型別的物件C無法視覺化,如下圖所示。
類別 c 的 b 子物件和 a 子物件
執行個體的類別C,還有B子物件,並A子物件。 執行個體的C,包括A和B子物件、 已完成物件。
它使用執行階段型別資訊,可以檢查變數的指標是否確實指到完整的物件,就可以安全地轉換為指向其階層架構中的另一個物件。 Dynamic_cast 運算子可以用來進行這類轉換 (cast)。 它也會執行 run-time 檢查,讓作業更安全。
您可以使用 nonpolymorphic 型別轉換, static_cast 運算子 (本主題會說明靜態和動態轉換轉換之間,以及適用於使用時的差異)。
本章節涵蓋下列主題: