雖然我在C++中工作了一段時間,但直到現在我還沒有必要使用多態特性,而且我對它們非常感興趣。基本類的基本多態指針
如果我有一個基類ClassA
和另一ClassB
提煉出來的,我知道我可以有virtual
成員函數ClassA
,在ClassB
實施後,將在即使實例指出在ClassB
實例調用使用ClassA
指針。沒有這個virtual
關鍵字,我認爲在使用基類指針時基類實現將佔上風,但是它正在對從子類實例化的對象進行操作,這在我看來是有疑問的,實際上ClassB
有其自己的實現相同的功能在這種情況下,這被有效地忽略了。
這是對多態行爲的正確理解嗎?
現在真正的問題是如何使用指向基類的指針來引用ClassB
。我真的可以只考慮兩種方式:
- 在實例化時創建的指針,使用返回一個基類指針,而實際上是子類分配內存,而不是使用子類的構造函數。 (這樣的創建函數是否具有共同名稱?)
- 使用
static_cast
投射對象並將其分配給指向基類的指針。
這些是生成基類指針到子類對象的兩種主要技術嗎?
相關:http://stackoverflow.com/q/5854581/46821 – 2013-04-04 13:25:48