关于一个自引用的问题求助
#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;
}