Warum funktioniert benannter Rückzugswertoptimierungsoptimierung hier nicht?C++

Programme in C++. Entwicklerforum
Anonymous
 Warum funktioniert benannter Rückzugswertoptimierungsoptimierung hier nicht?

Post by Anonymous »

Ich schaue mir ein Video auf RVO und NRVO an und Sie können an diesem Punkt sehen, dass: < /p>

Code: Select all

MyObj example()
{
MyObj a = MyObj(3);
return a += 1;
};
< /code>
hat nicht die Optimierung angewendet, während: < /p>
MyObj example()
{
MyObj a = MyObj(3);
a += 1;
return a;
};
< /code>
hat die Optimierung angewendet. Liegt dies einfach wegen einer Regel, die besagt, dass die Optimierung nur angewendet werden kann, wenn Sie einen LVALUE oder einen PrValue strikt zurückgeben? Ich habe Schwierigkeiten, die Wertkategorien zu verstehen, ich denke, return a += 1; Am Ende ist ein XValue, was ich denke, ein Lvalue, der durch einen Ausdruck in ein temporäres RValue modifiziert wurde. < /p>
Was ist mit: < /p>
MyObj example()
{
return MyObj(3) + 1;
};
< /code>
ist: < /p>
return MyObj(3) + 1;
< /code>
Die gleiche Wertkategorie wie: < /p>
return MyObj(3);
?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post