64,639
社区成员
发帖
与我相关
我的任务
分享
struct A {
int a ;
virtual void set () = 0 ;
} ;
struct B :public A {
virtual void set () {
a = 233 ;
}
} ;
struct _B {
void **__vptr ;
int a ;
} ;
void set (A &a) {
a.a = 101 ;
}
#include <iostream>
int main () {
B b ;
void *vlist[] = {set} ;
reinterpret_cast<_B &> (b).__vptr = vlist ;
b.set () ;
std::cout << b.a << std::endl ;
((A *) &b)->set () ;
std::cout << b.a << std::endl ;
return 0 ;
}