首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个神级小白有关问题,头都大了。

2013-11-18 
问一个神级小白问题,头都大了。。我这样还找到了工作? 还找到了工作?一段代码看不懂~!问题如下:为什么 x18

问一个神级小白问题,头都大了。。
问一个神级小白有关问题,头都大了。
我这样还找到了工作? 还找到了工作?一段代码看不懂~!问一个神级小白有关问题,头都大了。




问题如下:
为什么 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又调用拷贝构造,所以又给交换回来了。

热点排行