I am studying this little example below just to understand better the behavior of passing values by copy in C++.
#include <iostream>
using namespace std;
class A{
public:
A(){
cout << "A()" << endl;
}
A(const A& a){
cout << "A(const A& a)" << endl;
}
A(A&& a){
cout << "A(A&& a)" << endl;
}
};
A get_A(A a){
cout << "beginning get_A()" << endl;
A a2;
cout << "end get_A()" << endl;
return a2;
}
int main() {
cout << "beginning main" << endl;
A a1;
A a2 = get_A(a1);
cout << "end main" << endl;
return 0;
}
Output:
beginning main
A()
A(const A& a)
beginning get_A()
A()
end get_A()
end main
Why after the printed end get_A()
there isn't a A(const A& a)
, since I am returning by copy?