我想知道是否有一種方法來編程C++中的類轉換我不是在談論任何形式的type_casting,而是一個實例的克隆和轉換到另一個。C++將類的實例轉換爲另一個
如果我有這樣的代碼:
class BaseClass
{
string baseData;
};
class DerivedClassB : public BaseClass
{
int intData;
};
class DerivedClassA : public BaseClass
{
float floatData;
};
可以說,我有DerivedClassA的一個實例,我想「轉換」該實例DerivedClassB甚至BaseClass的我不關心的損失'floatData',只要BaseClass的'baseData'保留
我可以實現從任何類型到任何類型的轉換嗎?
BaseClass -> DerivedClassA
DerivedClassA -> DerivedClassB
DerivedClassB -> BaseClass
我將如何實現這種功能?
非常感謝啓蒙。
我認爲這是你在找什麼http://en.cppreference.com/w/cpp/language/cast_operator –
首先是一個動態轉換,並可能會失敗,如果對象不是一個實例DerivedClassA'。第二種是類型轉換,您應該創建一個構造函數或類型轉換運算符。第三種是靜態轉換,因爲DerivedClassB的所有實例都是由'BaseClass'定義的實例。你需要一個關於C++中的「繼承」和「類型轉換運算符」的教程。 Stackoverflow不是這樣廣泛的問題的地方。 – Persixty
雖然人們不明白我真正問的問題...我知道type_cast和繼承,我說的是這樣的真正轉換: BaseClass * baseC = new BaseClass(); DerivedClassA * derA = new DerivedClassA(baseC); DereivedClassB * derB = new DerivedClassB(derA); BaseClass * baseC2 = new BaseClass(DerB); 以更時尚的方式。 – scimunk