天天看點

c++中子類和父類的強制轉換

隻有子類轉換成父類,父類不能轉換成子類。

因為子類是從父類繼承而來,子類中包含父類中所有成員。

而如果父類可以轉換成子類,意味着将子類中将有一部分是未知的成員。這是不被允許的。

要是确定父類轉換成子類你能保證是正确的,可以用強制轉換:

子類強制轉換為父類用static_cast<>:(a : public A)

A * book;

a* name;

book = static_cast<A*>(name);

父類轉換為子類用dynamic_cast<>:

A * book;

a* name;

name = dynamic_cast<a*>(book);

使用什麼強制轉換方法視情況而定。

一般上到下用dynamic_cast<>  ,而下到上用static_cast<>

繼續閱讀