24章 アップキャスト
http://www.geocities.jp/ky_webid/cpp/language/024.html
さあて、怖そうな章に辿り着きました。
恐怖のキャストです。ちゃんと理解できるでしょうか・・・。
まずはアップキャストについてです。
アップキャストは、継承関係の下から上へ向かうキャストです。
アップキャストを行うにはdynamic_cast
実際に書いてみましょう。
#include <iostream> using namespace std; class CBase { }; class CSub : public CBase { }; int main () { CBase* pBase; CSub* pSub = new CSub; // アップキャストを行う pBase = dynamic_cast<CBase*>( pSub ); return 0; }
うまく動きました。
ですが実はこれ、アップキャストというのは安全なキャストといわれており、dynamic_castと明示的に書かなくても動作します。
pBase = pSub;
というか今までの章でもdynamic_castなんて使わずに直接代入してましたよね。多態性を表現するのに。
ということでアップキャストというのは通常dynamic_castを使いません。
dynamic_castを使うケースというのはダウンキャストをするときになります。
ダウンキャストについては次回です。