| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 819 人关注过本帖
标题:关于析构函数
只看楼主 加入收藏
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
 问题点数:0 回复次数:11 
关于析构函数

class Point
{
public:
Point(int xx=0, int yy=0) {X=xx; Y=yy; countP++; }
Point(Point &p);
~Point(){ countP--;}

int GetX() {return X;}
int GetY() {return Y;}
void GetC() {cout<<" Object id="<<countP<<endl;}
private:
int X,Y;
static int countP;
};
Point::Point(Point &p)
{
X=p.X;
Y=p.Y;
countP++;
}

int Point::countP=0;
int main()
{
Point A(4,5);
cout<<"Point A,"<<A.GetX()<<","<<A.GetY();
A.GetC();
Point B(A);
cout<<"Point B,"<<B.GetX()<<","<<B.GetY();
B.GetC();
}
红色的一句是干什么的呢,为什么在此句中加上输出,会输出一个莫名其妙的countP

搜索更多相关主题的帖子: 函数 
2007-06-28 23:22
smithallen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-26
收藏
得分:0 
~Point(){ countP--;}的作用是析够一个对象,对象的个数countP就会减一。

~Point(){ countP--;cout<<"Object number ="<<countP<<endl;}是正常的啊。
2007-06-29 10:12
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你写的吗?
因为countp是静态成员,所以独立于类存在。
它就是统计你当前类对象的个数。

明白了吗?所以析构就要减1!

Fight  to win  or  die...
2007-06-29 12:07
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
得分:0 
不明白啊,为什么要减一呢,什么时候析构的,我怎么删掉这一句析构函数对结果没有任何影响啊?

好人哪,一群好人哪!!!!!!
2007-06-29 22:48
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
比如这样:(main 函数里)
Point *A = new Point(4,5); //创建对象A
Point B(*A); //创建对象B
B.GetC();
delete A; //销毁A,调用析构函数
B.GetC();

你看下结果就明白了。

Fight  to win  or  die...
2007-06-29 23:58
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
静态成员被分配到另外的一片静态存储区,不依赖对象的存在

Viva,espana!
2007-06-30 11:31
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
得分:0 
我明白析构了要减一,可是为什么要认为设计这个减一呢,我看不用设计减一没有任何影响啊。这个程序不是我写的,所以才不明白为啥要罗索这一句。谢谢了!

好人哪,一群好人哪!!!!!!
2007-06-30 12:04
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你去运行了我的代码了吗?

运行了你就知道为什么要设计这个,你要清楚,那个countP是什么,有什么作用,你如果不去理解,就没办法了。

Fight  to win  or  die...
2007-06-30 12:25
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
得分:0 
啊,非常感谢版主!我想可能是设计人员的思维比较全面吧,虽然对现有的一点没有影响,但如果A没有了,程序就必须要这样析构了,嗯,我的确要狠狠地提高一下了。
谢谢版主教育。

好人哪,一群好人哪!!!!!!
2007-06-30 19:44
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
恩,继续加油吧!

GOOD LUCK

Fight  to win  or  die...
2007-06-30 20:32
快速回复:关于析构函数
数据加载中...
 
   



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

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