dlaczego konstruktor kopii jest wywołaniem, gdy przekazujemy obiekt jako argument według wartości do metody
Jestem nowy w programowaniu w C ++, gdy wykonuję niektóre programy w C ++ mam wątpliwości, dlaczego konstruktor kopiowania jest wywoływany, gdy przekazuję obiekt jako argument przez wartość do funkcji. proszę zobaczyć mój poniższy kod w tym, że przekazuję obiekt klasy jako argument przez wartość do funkcji display (), ale wywołuje konstruktor kopiowania, a następnie kontrola uderza w funkcję display (), ale rozumiem, dlaczego tak proszę o pomoc.
#include "stdafx.h"
#include <iostream>
using namespace std;
class ClassA
{
private:
int a, b;
public:
ClassA()
{
a = 10, b = 20;
}
ClassA(ClassA &obj)
{
cout << "copy constructor called" << endl;
a = obj.a;
b = obj.b;
}
};
void display(ClassA obj)
{
cout << "Hello World" << endl;
}
int main()
{
ClassA obj;
display(obj);
return 0;
}