看起來static_cast可以採取值,引用或指針並將它們轉換爲另一種類型的值,引用或指針。但是,似乎dynamic_cast,reinterpret_cast和const_cast只能參考參考和指針。4種不同類型的數據類型在C++中可以採用(或通常採用)
我知道cont_cast,它只需要指針或引用而不是變量,它是不確定的行爲。不知道爲什麼將dynamic_cast,reinterpret_cast的只能採取參考和指針,什麼會發生,如果使用的dynamic_cast和reinterpret_cast的上值類型。
例如,的static_cast採取可能採取指針:
B* pb; D* pd;
pointer:D* pd2 = static_cast<D*>(pb); // Not safe, D can have fields and methods that are not in B.
對於另一個例子,假設將dynamic_cast,reinterpret_cast的取值類型:
int B; char D;
B = dynamic_cast<B>(D);
int B; char D;
B = reinterpret_cast<B>(D);
會發生什麼,以及爲什麼我們應該不這樣做?
爲什麼我有這麼多下來票? – lightrek
我無法理解你問的是什麼問題。 –
@MarkB謝謝,編輯我的問題。 – lightrek