| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 533 人关注过本帖
标题:请叫一个关于自身类对象的指针的问题(新手)
取消只看楼主 加入收藏
zq_zq
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-10-14
收藏
 问题点数:0 回复次数:1 
请叫一个关于自身类对象的指针的问题(新手)
假如有某类a
class a
{
private:
int x;
a *p1;
a *p2;
........
..........
a(int i):x(i),p2(NULL){.....}
a():p1(this){}
void bb();
};

void a::bb()
{
p1->p2=new a(1);//第一次
p1->p2=new a(2);//第二次
p1->p2=new a(3);//第三次
}
int main()
{
a text;
text.bb();
......
......
}
p1->p2=new a;这个语句是否就是把NEW得的地址赋给p2?
现在p1的值不变,P2的值会随着每次NEW改变,另通过COUT输出p1->p2的值与P2一样变化的.
如果把bb()函数里的语句改动一下,在每一次NEW的后面加上p1=p1->p2;的语句,如下:
p1->p2=new a(1);//第一次
p1=p1->p2;
p1->p2=new a(2);//第二次
p1=p1->p2;
p1->p2=new a(3);//第三次
p1=p1->p2;
这时P2的值只在第一次NEW时由NULL变为第一次NEW时的地址,而后两次P2的值没有变动,
同时P1因为P1=P1->P2;语句会三次改变其值,而通过COUT输出P1->P2的值却始终为0;
不知道何故,该怎样理解P1->P2的含义,为什么会有上面这些情况的输出,希望高手帮我分析一下,
搜索更多相关主题的帖子: 指针 对象 
2006-10-14 13:32
zq_zq
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-10-14
收藏
得分:0 
非常感谢柳儿的回复,我终于明白了,我上面的代码是我所举的例子,也就没考虑代码的完整和性能了,
感谢柳儿告戒,我会慢慢养成良好的编码习惯的。
本来看下觉得还有疑问想再问,豁然想到在NEW时,在不同的实例中存在不同几个P1,P2指针,我一直想不通
的就是只有那两个指针,为何会有这些变化。原来已是此指针非彼指针了啊。

[此贴子已经被作者于2006-10-14 23:13:15编辑过]

2006-10-14 22:58
快速回复:请叫一个关于自身类对象的指针的问题(新手)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025694 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved