Können C++ - Compiler RVO für virtuelle Funktionen anwenden?Kann eine virtuelle Funktion ein Kandidat für RVO sein (Rückgabewertoptimierung)?
In diesem Fall:
class AbstractReader
{
//...
public:
virtual std::vector<float> getFloatVector() = 0;
//...
}
class XmlReader : public AbstractReader
{
//...
public:
virtual std::vector<float> getFloatVector()
{
std::vector<float> result;
//Do some parsing here...
return result;
}
//...
}
class BinaryReader : public AbstractReader
{
//...
public:
virtual std::vector<float> getFloatVector()
{
std::vector<float> result;
//Do some decoding here...
return result;
}
//...
}
RVO Kann return result;
Linien anwenden? Ich würde es nicht erraten.
Dann ist std::move(result)
der Weg für die Rückgabe großer Container in diesem Fall?
Dank
Können Sie bitte Ihre Frage klären? Gibt es oft virtuelle Funktionen? – juanchopanza
@juanchopanza: Ich denke, die Frage ist, ob RVO _within_in einer virtuellen Funktion, d. H. Für alles, was die virtuelle Funktion möglicherweise zurückgibt, nicht, ob RVO funktioniert, wenn eine virtuelle Funktion zurückgibt. (Und ich sehe keinen Grund, warum das prinzipiell nicht funktionieren sollte) – Damon
@Damon Ich denke das gleiche, aber besser lassen OP erklären was sie eigentlich fragen wollen. – juanchopanza