【问题标题】:Reference passed to a method传递给方法的引用
【发布时间】:2013-07-29 18:56:11
【问题描述】:

为什么有人会创建并调用一个将自己的类作为输入参数的方法?如果我们想分配/更改值,只做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();
    }
}

【问题讨论】:

    标签: c++ class reference


    【解决方案1】:

    您不能直接通过对象访问类的私有成员和受保护成员。对象只能访问公共变量。

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

    【讨论】:

    • 如果我将类变量 (a, b) 设为私有,我无法运行 ob.Change。
    • 你可以运行 ob.change() mehtod,没有人阻止你这样做,我的意思是你可以从 main 调用它,因为它是一个公共成员函数。
    • 我认为 OP 在问这个问题的反面。不是为什么要使用成员方法,而是为什么一个类会有在自己的类上运行的静态方法。
    • 但是他没有在任何地方提到静态,要回答这个问题,不建议将接受类类型的方法设为静态,因为静态方法不属于对象级别,它属于类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多