免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5392 | 回复: 10
打印 上一主题 下一主题

[C++] 类成员变量的偏移量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-22 17:14 |只看该作者 |倒序浏览
class Point3d{
public:
   &nbspoint3d(float a, float b, float c):x(a),y(b),z(c){
        
    }
    float x;
    float y;
    float z;
};


int main(int argc, char* argv[])
{
    
    float Point3d::*pf;
    pf = &Point3d::z;
    
&nbsp;&nbsp;&nbsp;&nbsp;cout<<"pf = "<<pf<<endl;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbspoint3d a(1.2, 2.3, 3.4);
&nbsp;&nbsp;&nbsp;&nbsp;cout<<a.*pf<<endl;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}




pf为什么输出总是1, 不论是给他赋值 x, y or z,难道不应该是输出x y z在类中的偏移量么?

论坛徽章:
0
2 [报告]
发表于 2008-09-22 17:19 |只看该作者
你用printf试一试。如果我没猜错的话你是不是在VC6.0下测试的?在VC6.0下用<<输出中如果遇到不认识的类型一率调参数为bool类似的,所以总输出1。

论坛徽章:
0
3 [报告]
发表于 2008-09-22 17:23 |只看该作者
原帖由 Cyberman.Wu 于 2008-9-22 17:19 发表
你用printf试一试。如果我没猜错的话你是不是在VC6.0下测试的?在VC6.0下用


果然,printf就好了,我用的g++

论坛徽章:
0
4 [报告]
发表于 2008-09-22 17:24 |只看该作者
学习了。。。还真没这么用过

论坛徽章:
0
5 [报告]
发表于 2008-09-22 17:26 |只看该作者
cout<<a.*pf<<endl;
a.*pf是什么意思

论坛徽章:
0
6 [报告]
发表于 2008-09-22 17:27 |只看该作者
原帖由 紫色的撒加 于 2008-9-22 17:26 发表
cout

因为pf代表是 z的偏移量,所以a.*pf 输出的是 a.z

论坛徽章:
0
7 [报告]
发表于 2008-09-22 20:08 |只看该作者
成员指针,指向成员的指针

论坛徽章:
0
8 [报告]
发表于 2008-09-22 23:17 |只看该作者
原帖由 Tanacore 于 2008-9-22 17:23 发表


果然,printf就好了,我用的g++


以前是在VC6.0中出问题就测试了一下,GCC当时没有测试,没想到问题是一样的。

论坛徽章:
0
9 [报告]
发表于 2008-09-23 09:02 |只看该作者
学习了,还没见过这种指针用法。

论坛徽章:
0
10 [报告]
发表于 2008-09-23 10:28 |只看该作者
原帖由 mzli 于 2008-9-23 09:02 发表
学习了,还没见过这种指针用法。


一般来说指向成员函数的指针有时会用到,但指向数据成员的指针基本上没人用的,也不推荐这样用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP