- 论坛徽章:
- 14
|
- #include <iostream>
- using namespace std;
- struct A { int a; };
- struct B : virtual A { int b; };
- struct C : virtual A { int c; };
- struct D : B, C { int d; };
- int main()
- {
- D d;
- d.a = 1;
- d.b = 2;
- d.c = 3;
- d.d = 4;
-
- cout << &d << endl;
-
- cout << "------------------------" << endl;
-
- cout << "a: " << &d.a << endl;
- cout << "b: " << &d.b << endl;
- cout << "c: " << &d.c << endl;
- cout << "d: " << &d.d << endl;
-
- cout << "------------------------" << endl;
-
- for( size_t i=0; i<sizeof(D)/sizeof(4); ++i ) // 32bits
- {
- cout << (((void**)&d)+i) << " : " << ((void**)&d)[i] << endl;
- }
- }
复制代码 0x22ff34
-----------------------
a: 0x22ff48
b: 0x22ff38
c: 0x22ff40
d: 0x22ff44
-----------------------
0x22ff34 : 0x4031ec
0x22ff38 : 0x2
0x22ff3c : 0x4031f8
0x22ff40 : 0x3
0x22ff44 : 0x4
0x22ff48 : 0x1 |
|