#include<iostream>
using namespace std;
class a
{
private:
int x;
int y;
public:
int getx()
{
return x;
}
int gety()
{
return y;
}
a()
{
x = 100;
y = 100;
}
void xmin()
{
x--;
}
void ab(a x)
{
x.xmin(); x.xmin(); x.xmin(); x.xmin();
}
};
void main()
{
a xx;
a yy;
cout << "xx" << endl;
cout << "x : " << xx.getx() << "y : " << xx.gety()<<endl;
cout << "yy" << endl;
cout << "x : " << yy.getx() << "y : " << yy.gety()<<endl;
xx.ab(yy);
cout << "xx" << endl;
cout << "x : " << xx.getx() << "y : " << xx.gety() << endl;
cout << "yy" << endl;
cout << "x : " << yy.getx() << "y : " << yy.gety() << endl;
}
为什么x.xmin()
中的函数void ab(a x)
无法正确执行? (x
的值没有随着xmin()
的函数将x
的值减少1而改变。
这是我的代码的简单版本,因此更容易理解:)
答案 0 :(得分:2)
void ab(a x)
它以价值来论证。该函数修改参数的本地副本,因此调用者不会看到任何更改。如果希望函数修改调用者的对象,则按引用传递:
void ab(a & x)
^