C++ 传递给方法的引用

C++ 传递给方法的引用,c++,class,reference,C++,Class,Reference,为什么会有人创建并调用一个有自己的类作为输入参数的方法?如果我们想分配/更改值,只做ob.a=x不是更简单吗?优势和劣势是什么 class Test { public int a, b; public Test(int i, int j) { a = i; b = j; } public void Change(Test junk) { junk.a = junk.a + junk.b;

为什么会有人创建并调用一个有自己的类作为输入参数的方法?如果我们想分配/更改值,只做ob.a=x不是更简单吗?优势和劣势是什么

class Test
{
    public int a, b;

    public Test(int i, int j)
    {
        a = i;
        b = j;
    }

    public void Change(Test junk)
    {
        junk.a = junk.a + junk.b;
        junk.b = -junk.b;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Test ob = new Test(15,20);
        Console.WriteLine("ob.a and ob.b before call: " + ob.a + " " + ob.b);
        ob.Change(ob);
        Console.WriteLine("ob.a and ob.b after call: " + ob.a + " " + ob.b);
        Console.ReadLine();
    }
}
不能通过对象直接访问类的私有和受保护成员。只有公共变量可以通过对象访问


因此,如果您想更改私有/受保护的数据成员,则需要成员函数。

如果我将类变量(a,b)设置为私有,则无法运行ob.change。您可以运行ob.change()方法,没有人阻止您这样做,我的意思是,你可以从main调用它,因为它是一个公共成员函数。我认为OP问的是这个问题的相反方向。不是为什么要使用成员方法,而是为什么一个类会有在它自己的类上运行的静态方法。但是他没有在任何地方提到静态,为了回答这个问题,不建议将一个接受类类型的方法设置为静态,因为静态方法不属于对象级别,它属于类。