sto facendo il seguente test:Perché c'è una copia prima dell'assegnazione?
#include <iostream>
#include <vector>
using namespace std;
class A
{
private:
int i;
public:
A():i(1){cout<<"A constr"<<endl;}
A(const A & a):i(a.i){cout<<"A copy"<<endl;}
virtual ~A(){cout<<"destruct A"<<endl;}
void operator=(const A a){cout<<"A assign"<<endl;}
};
int main()
{
A o1;
A o2;
o2=o1;
}
e l'uscita è:
A constr
A constr
A copy
A assign
destruct A
destruct A
destruct A
Sembra che "o2 = o1" ha fatto una copia prima seguita da un incarico, e mi chiedo qual è il storia dietro di esso. Grazie!