C++相談室 part10
■ このスレッドは過去ログ倉庫に格納されています
0213デフォルトの名無しさん
NGNG多重継承してるときに、オフセットの調整するかどうかじゃないの?
class B1 { int b1; };
class B2 { int b2; };
class D : public B1, public B2 {};
D* pd = new D;
B2* pb = bd;
こうすると pd と pb は、それぞれ「D オブジェクトの先頭 (= B1 オブジェクトの先頭)」
「D オブジェクト中にある B2 オブジェクトの先頭」を指すよね。
pd-> +------------
| int b1;
pb-> +------------
| int b2;
+------------
当然、アドレス値としては pd != pb になる。このときに
1. static_cast<D*>(pb) するとオフセット分だけ差し引いて pd と同じアドレスが返ってくる
2. reinterpret_cast<D*>(pb) すると pb のアドレスが、そのまま返ってくる
(規格上は実装依存だけど、たいていの処理系だとこうなる)
と、結果が違ってくる。
■ このスレッドは過去ログ倉庫に格納されています