ダウンキャストによる関数呼び出し
抽象基底クラス B があったとして、クラス D1, D2 が派生している。
関数 f(D1), f(D2) をオーバーロード定義したとき, f に B の変数を渡して自動的に呼ばれるものが振り分けられないかなーと思ったけど、だめだった。こういうときはどうすればいいのか。 f(B) を定義して is で調べるしかないのかな?
もしくはこう?
if(x is D1) f(x as D1); else if(x is D2) f(x as D2);
これはいやだな。
こういうことをやる機能を, マルチメソッドとか多重ディスパッチとかいうらしい.