以下程序在32位机器上运行输出是____。Wang, my age =1;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <iostream>
using namespace std;
class
animal
{
protected
:
int
age;
public
:
virtual
void
print_age(
void
) =
0
;
};
class
dog :
public
animal
{
public
:
dog() {
this
-> age =
2
;}
~dog() { }
virtual
void
print_age(
void
) {cout<<
"Wang, my age = "
<<
this
-> age<<endl;}
};
class
cat:
public
animal
{
public
:
cat() {
this
-> age =
1
;}
~cat() { }
virtual
void
print_age(
void
) {cout<<
"Miao, my age = "
<<
this
-> age<<endl;}
};
int
main(
void
)
{
cat kitty;
dog jd;
animal * pa;
int
* p = (
int
*)(&kitty);
int
* q = (
int
*)(&jd);
p[
0
] = q[
0
];//注意在这里修改了类cat的虚表指针的指向
pa = &kitty;
pa -> print_age();
return
0
;
}
p 是类cat的虚表指针,
q 是类dog的虚表指针
p[0] 指向cat的第一个函数,
q[0]指向dog的第一个函数
p[0] = q[0] 则p[0] 指向dog的第一个函数 则输出为wang age=
类成员变量不变 1
|