1 class A 2 { 3 }; 4 5 class B 6 { 7 }; 8 9 class C 10 { 11 }; 12 class G 13 {}; 14 15 class D:public A 16 { 17 }; 18 19 class E:public A,B 20 { 21 }; 22 23 class F:public A,B,C,G 24 { 25 }; 26 cout<<"void (D::*)()的大小是:"<<sizeof( void (D::*)() )<<endl; // 4 27 cout<<"void (E::*)()的大小是:"<<sizeof( void (E::*)() )<<endl; // 8 28 cout<<"void (F::*)()的大小是:"<<sizeof( void (F::*)() )<<endl; // 8 29 cout<<"void* 的大小是:"<<sizeof( void(*) )<<endl; //4
你输出的是类型的大小,不是指针,类似这样:
cout<<"D的大小是:"<<sizeof(D)<<endl;
cout<<"E的大小是:"<<sizeof(E)<<endl;
cout<<"F的大小是:"<<sizeof(F)<<endl;
即便是类型的大小那为何E,F都是8?
@旋转乾坤: 不是即便,而是就是类型大小。关于 C++ 中多继承下类型在内存中的布局问题,请你自行在网上搜下相关的知识学习下。