Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: sobol8 22. 05. 2014, 11:35:05
-
Dobrý den,
měl bych ještě jeden dotaz:
Když mám například:
objekt& objekt:operator=(objekt& o)
{
//nejake kopirovani
return *this;
}
Jakým způsobem prosím postupovat pro správné pochopení toho, co ten první řádek znamená? Týká se to pouze pravé strany výrazu přiřazení?
Děkuji
-
Tohle je operátor, který se aplikuje pro příkaz a = b; Přeloží se jako volání a.operator =(b).
Jinak přiřazovací operátor by měl mít jako parametr konstantní nebo rvalue referenci, případně (u typů podporujících swap) hodnotu:
objekt& objekt::operator =(const objekt& o);
objekt& objekt::operator =(objekt&& o);
objekt& objekt::operator =(objekt o);
Nekonstantní reference nedává pro přiřazovací operátor smysl*.
* C++ nijak neomezuje, co ten operátor má dělat, proto tam lze mít i nekonstantní referenci a předávaný objekt měnit, ale je vhodné to v zájmu zachování přehlednosti programu nedělat
-
object & operator=(object && o)
{
if (this == &o)
return *this;
this->~object();
/* ------- */
return *this;
}
Konstantní reference není jediná možnost ... R-value můžeme poslat i takto.