📄 17-11.txt
字号:
/* 范例:17-11 */
#include <iostream.h>
class A
{
public:
A(){cout << "Cons_A\t";}
~A(){cout << "Des_A\t";}
int a;
void pp(){cout << "pp() :class A\n";}
void show_addr(){cout << "A:: &a=" << &a << "\n";}
};
class B:public A
{
public:
B(){cout << "Cons_B\t";}
~B(){cout << "Des_B\t";}
int a;
int pp;
void show_addr();
};
void B::show_addr()
{
A::show_addr();
cout << "B:: &a=" << &a << " &pp=" << &pp << "\n";
}
class C:public A
{
public:
C(){cout <<
"Cons_C\t";}
~C(){cout << "Des_C\t";}
int a;
void pp(char a){cout << a << " :class C\n";}
void show_addr();
};
void C::show_addr()
{
A::show_addr();
cout << "C:: &a=" << &a << "\n";
}
class D:public B,public C
{
public:
D(){cout << "Cons_D\t";}
~D(){cout << "Des_D\t";}
int a;
int d;
void show_addr();
};
void D::show_addr()
{
B::show_addr();
C::show_addr();
cout << "D:: &a=" << &a << " &d=" << &d << "\n";
}
void test()
{
D obj;
cout << "\nsizeof(D)=" << sizeof(obj) << "\n";
obj.show_addr();
// class D内继承自B的成员副本a
cout << &obj.B::a << "\n";
// class D内继承自C的成员副本a
cout << &obj.C::a << "\n";
}
void main()
{
test();
getchar();
}
程序执行结果:
Cons_A Cons_B Cons_A Cons_C Cons_D
sizeof(D)=28
A:: &a=0065FDE0
B:: &a=0065FDE4 &pp=0065FDE8
A:: &a=0065FDEC
C:: &a=0065FDF0
D:: &a=0065FDF4 &d=0065FDF8
0065FDE4
0065FDF0
Des_D Des_C Des_A Des_B Des_A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -