ダウンキャスト

ダウンキャストってのは、親→子へのキャストのこと。下方向のキャストだからダウンキャストっていうんであって、精度云々とは別問題だと思うんだよなあ・・・

#include 
using namespace std;

class Base{
public:
     virtual ~Base(){}
};
class Derived1 : public Base{
};
class Derived2 : public Base{
public:
     Derived2() : a(20){};
     int a;
};

int main(){
     Base *b = new Derived1();
     Derived2 *d21  = (Derived2 *)(b);
     Derived2 *d22  = dynamic_cast(b);

     cout << d21 << " " << d21->a << endl;
     cout << d22 << " " << d22->a << endl;
}

危険なダウンキャストの例。いわゆるクロスキャストってやつですか。
ちなみにこれを実行すると、dynamic_castを使ったやつはnullになって実行時エラーになる。とまあこういう危険性を伴うのがダウンキャストなのであって、精度の話じゃないと思うんですよね。その辺どうなんでしょ。

・・・とint→byteのキャストを「ダウンキャスト」と言った講師の揚げ足取るためにいろいろ調べてしまった。まあ勉強になりましたわ。

ってか、講師代えてくれ・・・もしかして「反面教師」なのか?