したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

284 ◆rCEzuNnL0g:2008/09/07(日) 13:58:06
仮想継承で意味があるのはこんなのではない。
本当に意味があるのは、この例ではIHumanにメンバ変数がある時である。
そのときにCBaka*をISwimmer*やIClimber*にダウンキャストして、
ISwimmer::メンバ変数やIClimber::メンバ変数を変更すると、両方に適用されると。
ということは、両方とも同じメンバ変数を参照するためには、色々となんか良く分からないことをやる必要がある。
まあ、実際にやってみたのだが、その補正用の値がvbtableに格納されていると思われる。
恐らくこんな感じのメモリの使われ方ではなかろうか。
+00:CBaka::`vftable' <- ISwimmer
+04:CBaka::`vbtable' <- ISwimmerのIHumanメンバ変数参照用
+08:CBaka::`vftable' <- IClimber
+0C:CBaka::`vbtable' <- IClimberのIHumanメンバ変数参照用
+10:CBaka::`vftable' <- IHuman


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板