Today アクセスカウンター Yesterday アクセスカウンター

C++ は勝手にポインタの値が変わる素敵言語です

2008-01-24 ■[C/C++]もしかしてCの奴らは代入やキャストでポインタのアドレスが変わらないとか思っているのか?

正直日記 2008/01/26 _ もしかしなくても、そう思ってる俺です

へー。多分vtblの絡みなんだろうけど、しかし何故 b だけ違うアドレスになる
んだろう。むしろ、 a と c のポインタが同一であることに注目するのかしら。


まんまここの説明ですね (たまたまネット彷徨ってたら前橋さんのブログに書いてあったのでメモ.これがシンクロニシティってやつですかね)

プログラミング言語を作る日記 2008-01-21 ■[Diksam]Diksamのポリモルフィズム

ただし、この方法は単一継承であればこそうまくいくのであって、多重継承ではメソッドの添字が一意に決まらないためうまくいきません。そこで、C++では、アップキャストの際にこっそりポインタの値を変えるという豪快な解決法を取っています。たとえばAとBを継承したクラスCがあるとき、AとCは「メインの継承関係」として単一継承の際と同じ方法が取れますが、CがBにアップキャストされた際には、ポインタ自体を、Bのvtableがあるアドレスに変換します。

コメント

Secret

一部、リンクがおかしいような・・・

> kosaki さん

うっかり <a href=""> の中身がカラでした… それだと,うちの blog トップにリダイレクトされるようです.
プロフィール
  • Author:あろは (alohakun)
  • 京都のデバッガベンダーに勤めるアラサー会社員。

    本ブログの内容は,あくまでも個人的な感想や意見であり,会社の意見を代表するものでは一切ありません.

    連絡先 : alohakun ___at___ gmail.com
    mixi : http://mixi.jp/show_friend.pl?id=182927
    twitter : http://twitter.com/alohakun













    あわせて読みたい


    この日記のはてなブックマーク数


    スカウター : ホワット・ア・ワンダフル・ワールド


    Map
FC2カウンター
ブロとも申請フォーム

この人とブロともになる

最近のコメント
リンク
最近のトラックバック
人生の残り日数
日本人男性の平均寿命は 28700日.
RSSフィード
カテゴリー
  1. RSSリーダー