无法调用类函数(参数化类)

时间:2013-12-08 11:22:45

标签: c++ class

#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而改变。

这是我的代码的简单版本,因此更容易理解:)

1 个答案:

答案 0 :(得分:2)

void ab(a x)

它以价值来论证。该函数修改参数的本地副本,因此调用者不会看到任何更改。如果希望函数修改调用者的对象,则按引用传递:

void ab(a & x)
          ^