#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
pint(point &p)//这个是什么意思呀?
{X=p.X;//这个是什么意思呀?
Y=p.Y;//这个是什么意思呀?
};
//拷贝构造函数,用一个对象来初始化一个另一个对象...
运行结果
B=8:5
destructor is called
destructor is called
默认构造函数是不带参数的,但是当想用一个对象来初始化另一个对象时就需要传递该对象的参数,所以就有了你想问的这个构造函数.
复制构造函数的定义:
<类名>::<类名>(<<类名>&<参数>)
{...}
本题的point(point &p)
前面是不是少了point::呀
是不是应该point::pint(point &p)这样才对呀
应该写成 point(point &p)吧!
书上就是这样定义的呀
复制构造函数的定义:
<类名>::<类名>(<<类名>&<参数>)
{...}
所以我认为应该是point::point(point &p)
而不是point(point &p),不知道为什么会这样写呢
它是使用的內聯﹐所以就不要類名了。如果在類外定義的話就要。
拷贝构造函数,当然,你的这个类也可以不定义,因为它只有内置简单变量,可以不定义拷贝构造函数,使用系统自身提供的即可。
你就当做&p里存放着构造函数,&p就是一个内存地址,它存放着构造函数。
太多基础的东西你不懂了,好好看点基础的书。