📄 18-4.txt
字号:
/* 范例:18-4 */
#include <iostream.h>
class A
{
public:
A(){a=1;}
void pp(){cout << " a: " << &a << "\n";}
int a;
};
class B:virtual public A
{
public:
B(){b=2;}
void pp(){A::pp();cout << " b: " << &b << "\n";}
int b;
};
class C:virtual public A
{
public:
C(){c=3;}
void pp(){A::pp();cout << " c: " << &c << "\n";}
int c;
};
class D:public B,public C
{
public:
D(){d=4;}
void pp(){B::pp();C::pp();cout << " d: " << &d <<"\n";}
int d;
};
void main(void)
{
A obj1; B obj2; C obj3; D obj4;
cout <<" obj1: " <<sizeof(obj1) <<endl; /* 取得对象obj1的大小 */
cout <<"&obj1: " <<&obj1 <<endl; /* 取得对象obj1的开头地址 */
obj1.pp(); /* 调用函数pp()来取得各个数据成员地址 */
cout <<"================" <<endl;
cout <<" obj2: " <<sizeof(obj2) <<endl;
cout <<"&obj2: " <<&obj2 <<endl;
obj2.pp();
cout <<"================" <<endl;
cout <<" obj3: " <<sizeof(obj3) <<endl;
cout <<"&obj3: " <<&obj3 <<endl;
obj3.pp();
cout <<"================" <<endl;
cout <<" obj4: " <<sizeof(obj4) <<endl;
cout <<"&obj4: " <<&obj4 <<endl;
obj4.pp();
getchar();
}
程序执行结果:
obj1: 4
&obj1: 0065FE00
a: 0065FE00
===============
obj2: 12
&obj2: 0065FDF4
a: 0065FDFC
b: 0065FDF8
===============
obj3: 12
&obj3: 0065FDE8
a: 0065FDF0
c: 0065FDEC
===============
obj4: 24
&obj4: 0065FDD0
a: 0065FDE4
b: 0065FDD4
a: 0065FDE4
c: 0065FDDC
d: 0065FDE0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -