簡體   English   中英

當static_cast從派生類到基類時會發生什么?

[英]What happens when static_cast from derived class to base class?

在閱讀C ++標准時,我讀到static_cast是一種直接初始化 (C ++標准8.5 / 15)。
我認為這意味着在static_cast期間,會調用相應的重載構造函數
例如,存在從B導出的類型B和類型D,以及對象D d 然后表達式static_cast<B>(d)static_cast表達式。

作為標准手段,此static_cast表達式是直接初始化 這是否意味着這將調用類的構造函數B和返回類型的新構造的對象B


編輯
另一個問題是B & b = dB b = d怎么樣? 這兩個語句是否涉及B構造函數?

它們在標准中的含義是您可以將float轉換為整數。 此時轉換將發生。 您可以說此時直接初始化了結果int

如果參與轉換的類具有相應的重載轉換,則是,它將被調用。 我個人不建議積極使用此功能。 您的代碼將難以閱讀。

是的,對象類型的static_cast (即,不是對引用或指針類型的static_cast轉換)將使用適當的構造函數來創建臨時對象。

不。直接初始化意味着將從類D的對象復制B類對象中的每個字節,而不需要構造函數調用。

暫無
暫無

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

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