以下是引用小旬_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;
}我这个测试用例说明在不同的编译器下确实是不一样的,但是都说编译器影响,这个太笼统了!

