复制构造函数不懂
#include<iostream.h>
class point
{int X,Y;
public:
int xcoord(){return X;}
int ycoord(){return Y;}
point(int x,int y){X=x;Y=y;}
pint(point &p)//这个是什么意思呀?
{X=p.X;//这个是什么意思呀?
Y=p.Y;//这个是什么意思呀?
};
~point()
{cout<<"destructor is called"<<endl;
};
};
void main()
{point A(8,5);
point B=A;
cout<<"B="<<B.xcoord()<<":"<<B.ycoord()<<endl;
}
下面这四条一条也不懂
pint(point &p)//这个是什么意思呀?
{X=p.X;//这个是什么意思呀?
Y=p.Y;//这个是什么意思呀?
};
运行结果是:B=5:-858993460不和答案一样呀
下面的二个结果是一样的
destructor is called
destructor is called
问题点数:20、回复次数:10Top
1 楼foochow(无聊,灌水......)回复于 2005-09-21 13:42:14 得分 2
pint(point &p)//这个是什么意思呀?
{X=p.X;//这个是什么意思呀?
Y=p.Y;//这个是什么意思呀?
};
//拷贝构造函数,用一个对象来初始化一个另一个对象...
Top
2 楼foochow(无聊,灌水......)回复于 2005-09-21 13:43:22 得分 2
运行结果
B=8:5
destructor is called
destructor is called
Top
3 楼fujingn188()回复于 2005-09-21 13:59:40 得分 2
默认构造函数是不带参数的,但是当想用一个对象来初始化另一个对象时就需要传递该对象的参数,所以就有了你想问的这个构造函数.Top
4 楼hailun(大海)回复于 2005-09-21 14:01:48 得分 2
复制构造函数的定义:
<类名>::<类名>(<<类名>&<参数>)
{...}
本题的point(point &p)
前面是不是少了point::呀
是不是应该point::pint(point &p)这样才对呀Top
5 楼pbcd(沙漠绿州)回复于 2005-09-21 14:02:18 得分 2
应该写成 point(point &p)吧!Top
6 楼hailun(大海)回复于 2005-09-21 14:16:30 得分 2
书上就是这样定义的呀
复制构造函数的定义:
<类名>::<类名>(<<类名>&<参数>)
{...}
所以我认为应该是point::point(point &p)
而不是point(point &p),不知道为什么会这样写呢Top
7 楼pyzs2004(丟丟)回复于 2005-09-21 15:28:49 得分 2
它是使用的內聯﹐所以就不要類名了。如果在類外定義的話就要。Top
8 楼sinall()回复于 2005-09-21 15:38:00 得分 2
拷贝构造函数,当然,你的这个类也可以不定义,因为它只有内置简单变量,可以不定义拷贝构造函数,使用系统自身提供的即可。
Top
9 楼minjunyu(飞天小鱼)回复于 2005-09-21 17:53:00 得分 2
你就当做&p里存放着构造函数,&p就是一个内存地址,它存放着构造函数。Top
10 楼djfu(飞龙在天)回复于 2005-09-21 18:19:06 得分 2
太多基础的东西你不懂了,好好看点基础的书。Top




