天天看點

dynamic_cast用法

dynamic_cast用法

範式

該運算符把expression轉換成type-id類型的對象。Type-id必須是類的指針、類的引用或者void*;

如果type-id是類指針類型,那麼expression也必須是一個指針,如果type-id是一個引用,那麼expression也必須是一個引用。

dynamic_cast運算符可以在執行期決定真正的類型。如果downcast是安全的(也就說,如果基類指針或者引用确實指向一個派生類對象)這個運算符會傳回适當轉型過的指針。如果downcast不安全,這個運算符會傳回空指針(也就是說,基類指針或者引用沒有指向一個派生類對象)。

dynamic_cast主要用于類層次間的上行轉換和下行轉換,還可以用于類之間的交叉轉換。

作用:将一個基類對象指針(或引用)cast到繼承類指針,dynamic_cast會根據基類指針是否真正指向繼承類指針來做相應處理,

Apollo代碼解析

brake_command_102_ = dynamic_cast<Brakecommand102*>(
      message_manager_->GetMutableProtocolDataById(Brakecommand102::ID));
           

将基類的Brakecommand102指針cast到繼承類brake_command_102_。