构造函数
#include<iostream>#include<cmath>
using namespace std;
class Point{
public:
Point(int xx = 0, int yy = 0):x(xx), y(yy){cout<<"Constructing\n";}
Point(const Point &a):x(a.x), y(a.y){cout<<"Copying\n";}
int GetX(){return x;}
int GetY(){return y;}
private:
int x, y;
};
class Distance{
public:
Distance(Point aa, Point bb):a(aa), b(bb){}
double GetDis(){return sqrt(pow(a.GetX() - b.GetX(), 2) + pow(a.GetY() - b.GetY(), 2));}
private:
Point a, b;
};
int main(){
Point mp1(5, 10), mp2(20, 30);
Distance mdist(mp1, mp2);
cout<<"The distance is "<<mdist.GetDis()<<endl;
}
运行结果
问题是:
为什么有四个Copying 初始化Distance对象的时候完成了四次拷贝复制
首先该函数执行时将mp1和mp2各拷贝复制一份传递到函数里面
然后Distance(Point aa, Point bb):a(aa), b(bb){}又将传递进来的Point对象进行了拷贝复制
所以一共四个 BngThea 发表于 2018-6-28 16:10
初始化Distance对象的时候完成了四次拷贝复制
首先该函数执行时将mp1和mp2各拷贝复制一份传递到函数里面 ...
哦是将mp1, mp2复制给一个匿名对象,
匿名对象再复制给a, b吗 苏丛 发表于 2018-6-28 16:48
哦是将mp1, mp2复制给一个匿名对象,
匿名对象再复制给a, b吗
函数调用的时候,形参不是地址或引用就会拷贝一份
页:
[1]