- 443 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:52:27 ]
- >441
>多重継承だとVTBLが複雑になるといった情報を先ほど知ったのですが、 >その影響ということなのでしょうか? vtbl よりもメモリレイアウトの方かな。 派生クラスのオブジェクトの一部に基本クラスのオブジェクトが含まれる。 仮に、Hoge クラスのレイアウトが次のようになったとする。 Factory<Hoge> の内容 Object の内容 Hoge 独自の内容 このとき、Hoge * はオブジェクトの先頭を指すので「Factory<Hoge> の内容」の先頭を指している。 void * へキャストする際は、そのままオブジェクト先頭を指すので「Factory<Hoge> の内容」の先頭を指す。 Object* へキャストする場合は、内部の基本クラスのオブジェクトの先頭を指すので、「Object の内容」の先頭を指す。 なので、Factory<Hoge> の内容(とパディング)で 8 バイト確保されている場合には、Object* へキャストするとポインタ値が +8 される。 多分、ARM コンパイラと VC でオブジェクトのメモリレイアウトが違うんじゃない?
|

|