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

关于一个自引用的有关问题

2013-10-31 
关于一个自引用的问题求助#include iostreamusing namespace stdclass Sample{private:int xpublic:Sa

关于一个自引用的问题求助
#include <iostream>

using namespace std;
class Sample
{
private:
   int x;
public:
   Sample(){}
   Sample(int a){x=a;}
   Sample(Sample &a){x=a.x++;}
   void disp(){cout<<x++;}
};
void fun(Sample &s1,Sample s2)
{
    s1.disp();s2.disp();
}
int main()
{
    Sample s1(2),s2=s1;
    fun(s2,s1);
    s1.disp();s2.disp();
    return 0;
}

结果为什么是2 3 4 3? 请详细讲解 谢谢 自引用,c++
[解决办法]
参考下


int main()
{
    Sample s1(2),s2=s1; //此操作完 s1.x = 3 s2.x = 2
    fun(s2,s1); // 传参顺序注意,先是s2 再s1 ,所以 现在打印2 再打印3, 
               //执行完后 s1.x = 4, s2.x = 3;
    s1.disp(); // 打印4 之后 s1.x = 5
    s2.disp(); // 打印3 之后 s2.x = 4
        
    //所以最后结果为 2 3 4 3 
    return 0;
}

热点排行