C ++では、クラスオブジェクトは他の機能を参照して自動的に渡されません。デフォルトでは、オブジェクトを関数に渡すと、値によって渡されます。これは、オブジェクトのコピーが作成され、関数が元のオブジェクトではなくこのコピーで動作することを意味します。これは「バリュー」として知られています。

バリューごとに、オブジェクトをコピーする必要があるため、メモリ使用量の増加やパフォーマンスの低下の可能性など、いくつかの欠点があります。これらの問題を回避するために、 '＆'シンボルを使用して参照によりオブジェクトを明示的に渡すことができます。参照を通過すると、関数は元のオブジェクトで直接動作し、コピーは作成されません。

パスごとの価値とパスごとの違いを説明する簡単な例を次に示します。

`` cpp
#include <iostream>

クラスmyclass {
公共：
    int値;

    myclass（int v）：value（v）{}
};

void pass_by_value（myclass obj）{
    obj.value = 10;
}

void pass_by_reference（myclass＆obj）{
    obj.value = 20;
}

int main（）{
    myclass obj1（5）;
    myclass obj2（5）;

    pass_by_value（obj1）;
    std :: cout << "after pass_by_value：" << obj1.value << std :: endl;//出力：5

    pass_by_reference（obj2）;
    std :: cout << "after pass_by_reference：" << obj2.value << std :: endl;//出力：20

    0を返します。
}
`` `

この例では、pass_by_valueはオブジェクトのコピーで動作するため、元のオブジェクトの値を変更しません。ただし、Pass_by_referenceは、オブジェクト自体で動作するため、元のオブジェクトの値を直接変更します。
In C++, class objects are not automatically passed by reference to other functions. By default, when you pass an object to a function, it is passed by value. This means that a copy of the object is created, and the function operates on this copy rather than the original object. This is known as "pass-by-value."

Pass-by-value can have some downsides, such as increased memory usage and the potential for slower performance because the object must be copied. To avoid these issues, you can explicitly pass objects by reference using the '&' symbol. When passing by reference, the function operates on the original object directly, and no copy is created.

Here's a brief example to illustrate the difference between pass-by-value and pass-by-reference:

```cpp
#include <iostream>

class MyClass {
public:
    int value;

    MyClass(int v) : value(v) {}
};

void pass_by_value(MyClass obj) {
    obj.value = 10;
}

void pass_by_reference(MyClass &obj) {
    obj.value = 20;
}

int main() {
    MyClass obj1(5);
    MyClass obj2(5);

    pass_by_value(obj1);
    std::cout << "After pass_by_value: " << obj1.value << std::endl; // Output: 5

    pass_by_reference(obj2);
    std::cout << "After pass_by_reference: " << obj2.value << std::endl; // Output: 20

    return 0;
}
```

In this example, pass_by_value does not modify the original object's value because it operates on a copy of the object. However, pass_by_reference modifies the original object's value directly because it operates on the object itself.