Mamy klasę Useless
class Useless
{
private:
int n;
char * pc;
...
}
Zdefiniowany jest konstruktor przenoszący:
Useless::Useless(Useless && f)
{
n = f.n;
pc = f.pc;
f.pc = nullptr;
f.n = 0;
}
Jest tez przeciążony operator+():
Useless Useless::operator+(const Useless & f) const
{
Useless temp = Useless(n + f.n);
...
return temp;
}
Następuje wywołanie konstruktora przenoszącego:
Useless one(10, 'x');
Useless three(20, 'o');
Useless four (one + three); // w tym miejscu
Nie potrafię zrozumieć co dzieje się z pamięcią obiektu tymczasowego (r-wartością) skoro w definicji konstruktora przenoszącego odwołanie f.n = 0
wydaje mi się powinno wpłynąć na to co jest pod tym samym adresem n = f.n
a okazuje się, że tak nie jest.