为什么拷贝构造函数出现了四次
#include<math.h>#include<iostream.h>
class point
{
private:
int x,y;
public:
point (int xx=0,int yy=0)
{
x=xx;
y=yy;
}
point (point &p);
int getx()
{
return x;
}
int gety()
{
return y;
}
};
point::point(point &p)
{
x=p.x;
y=p.y ;
cout<<p.x;
cout<<"point 拷贝构造函数被调用"<<endl;
}
class distance
{
private :
point p1,p2;
double dist;
public :
distance(point xp1,point xp2);
double getdis()
{
return dist;
}
};
distance::distance(point xp1,point xp2):p1(xp1),p2(xp2)
{
cout<<"distance 拷贝构造函数被调用"<<endl;
double x=double(p1.getx()-p2.getx());
double y=double(p1.gety()-p2.gety());
dist =sqrt(x*x+y*y);
}
void main()
{
point myp1(1,1),myp2(4,5);
distance myd(myp1,myp2);
cout<<"the distance is:";
cout<<myd.getdis()<<endl;
}
我跟踪发现这些拷贝构造函数都来自 distance::distance(point xp1,point xp2):p1(xp1),p2(xp2)
为什么?
[[it] 本帖最后由 sishui198 于 2008-5-15 16:03 编辑 [/it]]