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を使うケースというのはダウンキャストをするときになります。

ダウンキャストについては次回です。