类的内存布局:
结论: 成员变量才占空间,普通函数不占空间! 如果有virtual 则类头部是一个虚函数表指针!
#include <stdio.h>
class A
{
private:
int a;
char b;
short c;
public:
virtual void hello()
{
printf("Hello\n" );
}
virtual void world()
{
printf("world\n");
}
virtual void print()
{
printf("%d, %c , %d\n", a ,b,c);
}
};
typedef void (*PFUN)();
int main()
{
A a;
printf("sizeof(A) = %d\n", sizeof(A));
long *p = (long *)&a;
PFUN *arr = (PFUN*) (*p) ; //取虚函数表指针的值
arr[0]();
arr[1]();
int * pA =(int *)( (char*) p + 4) ; //先跳过虚表入口地址指针4字节
char *pB = (char *)((char*)p + 4 +4); // 成员b的地址
short *pC = (short *)((char*)p + 4 + 4+2); // 成员b的地址
*pA = 123;/