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

#include <math.h>
class point{//声明一个point 类
public://私有成员,本类成员可以访问,对象不能访问。
float Xcoord;
float Ycoord;
public:
point(void);
point(float,float);
point(point &p);
point GetMid(point);//求中点
void print()
{cout<<"("<<Xcoord<<","<<Ycoord<<")"<<endl;
}
~point();

};// class point
point:::~point()
{cout<<"~point() invoked"<<endl;
}

point point::GetMid(point p)
{
return point((Xcoord+p.Xcoord)/2,(Ycoord+p.Ycoord)/2);
}

point::point(point &p)//拷贝构造函数的实现
{Xcoord=p.GetX();
Ycoord=p.GetY();
cout<<"point(point &P) invoked"<<endl;
}
point::point(void)//构造函数的实现
{cout<<"point() invoked"<<endl;
}
point::point(float x,float y)//构造函数的实现
{Xcoord=x;
Ycoord=y;
cout<<"point(float x,float y) invoked"<<endl;
}


//main()文件
#include <iostream.h>
#include "point.h"
void main()
{
point point1(0,0),point2(2,3);
point1.print();
point2.print();
point1.GetMid(point2);}

有绿色代码时输出为:
point(float x,float y) invoked
point(float x,float y) invoked
(0,0)
(2,3)
point(point &P) invoked
point(float x,float y) invoked
~point() invoked
~point() invoked
~point() invoked
~point() invoked
Press any key to continue


删除绿色部分代码输出为:
point(float x,float y) invoked
point(float x,float y) invoked
(0,0)
(2,3)
point(point &P) invoked
point(float x,float y) invoked
point(point &P) invoked
Press any key to continue
一个有自定义的析构函数一个没有怎么会出现这样的输出

搜索更多相关主题的帖子: 函数 构造 拷贝 
2005-10-31 21:52
快速回复:请教:拷贝构造函数与析构函数函数问题
数据加载中...
 
   



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

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