ダウンキャスト
ダウンキャストってのは、親→子へのキャストのこと。下方向のキャストだからダウンキャストっていうんであって、精度云々とは別問題だと思うんだよなあ・・・
#includeusing 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のキャストを「ダウンキャスト」と言った講師の揚げ足取るためにいろいろ調べてしまった。まあ勉強になりましたわ。
ってか、講師代えてくれ・・・もしかして「反面教師」なのか?