使用对象引用传输变量。有还是没有 &?

Transferring variables with object reference. With or without &?

#include <iostream>
class class1
{
public:int number = 2;
};

class class2
{
public:
    void method(class1 &obj)
    {
        obj.number;
        std::cout << obj.number;

    }
};

int main()
{
    class1 c1;
    class2 c2;
    c2.method(c1);
}

运行 和 void method(class1 &obj) 有或没有 & 有什么区别? 它会改变内存的使用吗?

我听说使用 & 很好,所以您不会得到 NullReferenceException。 我仍然可以在没有 & 的情况下访问变量,所以我应该在这个愚蠢的例子中使用 & 吗?

为了让它变得非常简单, 按值传递意味着传递实际值。因此,您需要将此值复制到一个变量中才能使用它。

void method(class1 obj)

通过引用传递意味着传递一个数字(称为地址),它定义了值的存储位置。 传递地址,然后不进行任何复制,修改实际对象。

void method(class1 &obj)

按引用传递被认为比按值传递更有效,因为它不会将参数复制到相同类型的新变量(因为它使用实际对象)。

另请注意,按值传递不会修改真实对象(仅副本)。一个很好的例子是 ̀swap two variables` 如下:

void swap(int a, int b)
{
   int t;

   t  = b;
   b = a;
   a = t;
}

如果您使用 `swap(x,y)̀ 在 main 函数中按值调用,则初始值(调用前)和最终值(调用后)不会交换。

但是,如果您通过引用 void swap(int& a, int& b) 来定义函数(函数体中没有任何变化),您会看到调用 swap(x,y) 确实会将两个变量交换为操作。