指针长度由什么决定呢?
我电脑的CPU是 Intel® Celeron® Processor E3300 但是测试了下,发现指针的长度还是4个字节,为什么不是8个字节呢?
#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; }我这个测试用例说明在不同的编译器下确实是不一样的,但是都说编译器影响,这个太笼统了!