65,184
社区成员




#include <iostream>
using namespace std;
class A{
public:
virtual void g(){
cout << "A::g" << endl;
}
private:
virtual void f(){
cout << "A::f" << endl;
}
};
class B:public A{
void g(){
cout << "B::g" << endl;
}
virtual void h(){
cout << "B::h" << endl;
}
int a;
};
typedef void (*fun)(void);
int main(){
B b;
fun pfun;
for (int i = 0; i < 3; i++){
pfun = (fun)*((int*)*(int*)(&b)+i);
pfun();
}
return 0;
}
int main(){
B b;
fun pfun;
for (int i = 0; i < 3; i++){
pfun = (fun)*((int*)*(int*)(&b)+i);
pfun();
}
int* vptr = (int*)*(int*)(&b);
const type_info* ti = (const type_info*)*(((int*)*(vptr-1))+3);
std::cout << ti->name() << std::endl;
return 0;
}