问一个神级小白问题,头都大了。。
我这样还找到了工作? 还找到了工作?一段代码看不懂~!
问题如下:
为什么 x=18;y=5? 什么时候互换了 X,Y的值?
然后 什么时候 x=5 y=18了?;为什么 location(const location &p)执行了两次?
o()o 唉。。。越学越糊涂。
或者说,我之前学的都是白学了?
快点来人啊,速度问完给分后 删帖了。,,不活了啊~!
Location(const Location &p)
{
x=p.y; y=p.x;
cout<<"Executing constructor2"<<endl;
cout<<"x="<<x<<"y="<<y<<endl;
}
//这里的拷贝构造函数把值对换了啊,
//拷贝构造函数会构造临时对象的!
[解决办法]
Location p2=fun(p1);
这一句就让拷贝构造调用了两次。
第一次是传参,由于参数是值传递,所以传参的时候实际上是拷贝了一个p1,调用了一次。
之后是返回值,fun的返回值赋值给p2的时候,又拷贝了一遍。
而你拷贝构造函数内部这么交换了x,y的值:
x=p.y; y=p.x;
所以虽然在fun函数内部打印的时候你的值被交换了,但你返回值赋值给p2又调用拷贝构造,所以又给交换回来了。