class Point{
private:
double X,Y;
public:
Point(double xx=0, double yy=0)
{
X=xx;
Y=yy;
cout<<"Point("<<X<<","<<Y<<")"<<endl;
}
Point(Point &p)
{
X=p.X;
Y=p.Y;
cout<<"Point is copied."<<endl;
}
double Distance(Point &p);
};
double Point::Distance(Point &p)
{
double dx,dy;
dx = X - p.X;
dy = Y - p.Y;
return sqrt(dx*dx + dy*dy);
}
Point f(double x, double y)
{
Point P(x,y);
return P;
}
void main()
{
Point A(0,0);
Point &B = f(3,4); //这一行为什么会调用两次拷贝构造函数?
cout<<"Distance is "<<A.Distance(B)<<endl;
}
以下是输出结果:
Point(0,0)
Point(3,4)
Point is copied.
Point is copied.
Distance is 5
好像是调用了两次拷贝构造函数,我知道有一个返回的return P调用了一次,为何构造引用&B时还会调用?但这样的话下边的函数A.Distance(B)参数也会构造一次引用为啥不调用了呢?。。。。。好无语啊。。。。。考研试题,救救我这个考研狗吧。