有一题弄不懂

SearchLife 2009-04-03 01:43:01


最近遇到一个题,大概是这样子的:
class A
{
public:
int x,y;
void display()
{
cout << "x=" << x << "y=" << y<<endl;
}
}

int main()
{
int A::*p;
p=&x;
p->display();
p=&y
p->display();
}

问输出什么?搞不懂。
...全文
292 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
SearchLife 2009-04-13
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 chenzongquan1973 的回复:]
int A::*p是定义一个成员指针p,可以用来保存A类中的某个整型成员的地址,比如&A::x或者&A::y。
这样保存之后,*p就表示相应的成员x或者y。
如果有一个A类的对象a,那么就可以用a.*p来表示a.x或者a.y。
如果有一个A类的指针A*q=&a,那么就可以用q->*p来表示q->x或者q->y。
[/Quote]

谢谢大家了,说得很清楚。
yegoo 2009-04-04
  • 打赏
  • 举报
回复
诡异的程序
hylove9494 2009-04-04
  • 打赏
  • 举报
回复
语法错误..无返回值..
Cpp权哥 2009-04-04
  • 打赏
  • 举报
回复
int A::*p是定义一个成员指针p,可以用来保存A类中的某个整型成员的地址,比如&A::x或者&A::y。
这样保存之后,*p就表示相应的成员x或者y。
如果有一个A类的对象a,那么就可以用a.*p来表示a.x或者a.y。
如果有一个A类的指针A*q=&a,那么就可以用q->*p来表示q->x或者q->y。
Cpp权哥 2009-04-04
  • 打赏
  • 举报
回复
int A::*p是定义一个成员指针p,可以用来保存A类中的某个整型成员的地址,比如&A::x或者&A::y。
这样保存之后,*p就表示相应的成员x或者y。
如果有一个A类的对象a,那么就可以用a.*p来表示a.x或者a.y。
如果有一个A类的指针A*q=&a,那么就可以用q->*p来表示q->x或者q->y。
BuleRiver 2009-04-04
  • 打赏
  • 举报
回复
学习了
zbihong 2009-04-04
  • 打赏
  • 举报
回复
帮顶!!!
leo315 2009-04-04
  • 打赏
  • 举报
回复
程序员要写简单易懂的代码,这么一小段就写成这样,要是写一个project,就没有人能懂了。
ttklboy 2009-04-03
  • 打赏
  • 举报
回复
绝对是错的

JIGSONG 2009-04-03
  • 打赏
  • 举报
回复
不得不说,很诡异
wangjizhen123 2009-04-03
  • 打赏
  • 举报
回复
不会,我好好看看
lyconglove 2009-04-03
  • 打赏
  • 举报
回复
没学过的?是什么语言的??
xuruichen 2009-04-03
  • 打赏
  • 举报
回复
语法错误
xuruichen 2009-04-03
  • 打赏
  • 举报
回复
语法错误
yuhaozx 2009-04-03
  • 打赏
  • 举报
回复
int A::*p; 这句令人疑惑
fairchild811 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 bichenggui 的回复:]
对于这个例子而言, int A::×p; 实际上只是一个偏移量的值。并不能得到A::x 或A::y的真实地址。

对于一个已经实例化的对象A a来说
可以用  int* p = &(a.x)来得到x的具体地址。
由于x是类的第一个成员,所以x的地址应该也是a的地址。
进行地址转换, ((A×)p)->Display()这样是可以的。

This is just a trick.

[/Quote]

恩,觉得不是万不得已没必要用这些方法,自己都容易看不明白,就容易出错
fairchild811 2009-04-03
  • 打赏
  • 举报
回复
偏移量。
野男孩 2009-04-03
  • 打赏
  • 举报
回复
A::*p, 指向成员变量的指针。

基础知识啊,好好看看C++ Primer吧
Muer_yeah 2009-04-03
  • 打赏
  • 举报
回复
6楼正解
Hayden_yang 2009-04-03
  • 打赏
  • 举报
回复
楼主,main函数没返回值哦
加载更多回复(21)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧