关于C++中成员指针的问题

[复制链接]
查看11 | 回复0 | 2006-3-31 18:00:27 | 显示全部楼层 |阅读模式
本来大概知道一些,看了题目差点也搞昏了呵呵。指针是指向一些内存地址的变量,既可以是数据的地址也可以是函数的地址。C++的成员指针遵从同样的原则。困难的是所有的指针需要一个地址,但在类内部没有地址;选择一个类的成员意味着在类中偏移。只有把这个偏移和具体对象的开始地址结合,才能得到实际地址。成员指针的语法要求选择一个对象的同时逆向引用成员指针。struct simple { int a ; }simple so;simple* sp = &so;如果有一个这个结构的指针sp和对象so,如果有一个指针指向一个类对象成员,甚至假设它代表对象内一定的偏移,将会发生什么?为了取得指针指向的内容,必须用*号逆向引用。但是,它只是一个对象内的偏移,所以还必须要指定那个对象。因此,*号要和逆向引用的对象结合。sp->*pm = 47; so.*pm = 47;定义pm的语法是什么?其实它像任何一个指针,必须说出它指向什么类型。并且,在定义中也要使用一个‘*’号。唯一的区别只是必须说出这个成员指针使用什么类的对象。当然,这是用类名和全局操作符实现的: 定义成员指针:int simple::*pm;定义并初始化成员指针:int simple::*pm = &simple::a;因为引用到一个类而非那个类的对象,因而,&simple::a仅可作为成员指针的语法表示。而pm到底能指向什么类型呢?从int simple::*这里很轻松能看出,它只能指向simple类的int类型a,所以答案应该是D呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行