" " " , , ".
++:
struct Left
{
int ll;
};
struct Right
{
int rr;
};
struct Derived : Left, Right
{
int dd;
};
() :
+ Derived ----------------+
| + Left + + Right + |
| | ll | | rr | dd |
| +------+ +-------+ |
+-------------------------+
, 3 int s, :
+ Derived------+
| ll | rr | dd |
+--------------+
:
Derived d;
Dervied *pd = &d;
Left *pl = &d;
Right *pr = &d;
pd d, ll.
pl Left d. Left - ll. pl == pd, pd Left*. , pd ll, pd . ( ).
pr Right d. Right rr, pr rr. , pr == pd pd Right*. Right d rr, pd ll. , (= ) pd ( int), rr. , &d Derived* Right* pr .
, void* . , &d.ll != &d.rr, pl == pr.