指针长度由什么决定呢?
我电脑的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;
}我这个测试用例说明在不同的编译器下确实是不一样的,但是都说编译器影响,这个太笼统了!

