首页 新闻 会员 周边

颠覆你的“指针观”,哪位大神来解释下这个?

0
悬赏园豆:20 [待解决问题]
 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
旋转乾坤的主页 旋转乾坤 | 初学一级 | 园豆:55
提问于:2015-01-04 14:09
< >
分享
所有回答(1)
0

你输出的是类型的大小,不是指针,类似这样:

cout<<"D的大小是:"<<sizeof(D)<<endl;

cout<<"E的大小是:"<<sizeof(E)<<endl;

cout<<"F的大小是:"<<sizeof(F)<<endl;

Launcher | 园豆:45045 (高人七级) | 2015-01-05 09:18

即便是类型的大小那为何E,F都是8?

支持(0) 反对(0) 旋转乾坤 | 园豆:55 (初学一级) | 2015-01-12 22:30

@旋转乾坤: 不是即便,而是就是类型大小。关于 C++ 中多继承下类型在内存中的布局问题,请你自行在网上搜下相关的知识学习下。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-01-13 09:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册