以下是引用小旬_C在2010-8-22 13:30:13的发言:
没看出什么,我太笨老
看来要版主出马了
没看出什么,我太笨老
#include <stdio.h> class base { public: virtual void func(){printf("call base::func\n");}; }; class test:public base { public: void func(){printf("call test::func\n");}; }; int main() { void(base::*p)() = &base::func; test x; (x.*p) (); // 调用的是test::func; base y; (y.*p)(); // 调用的是base::func; // 以下在32位机器上, VC6 下是 4, GCC4.4.1 是 8 ,CodeGear C++ 6.10 的结果是12 printf("sizeof( void(base::*p)()) %d\n" , sizeof(p) ); printf("sizeof( void(base::*p)()) %d\n" , sizeof(class base) ); return 0; }我这个测试用例说明在不同的编译器下确实是不一样的,但是都说编译器影响,这个太笼统了!