C++ derleyiciler sanal işlevler için RVO uygulayabilir mi? Bu durumdaSanal bir işlev RVO'ya (dönüş değeri optimizasyonu) bir aday olabilir mi?
:
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 return result;
hatlarına başvurabilir miyim? Tahmin etmem.
Daha sonra, bu durumda büyük kapları iade etmenin yolu olan std::move(result)
mu?
Teşekkür
Sorunuzu açıklar mısınız? Sık sık sanal işlevler mi veriyorsunuz? – juanchopanza
@juanchopanza: Bence, RVO'nun sanal bir işleve geri dönüp dönmeyeceğini, sanal bir işlevin döndürülmesiyle ilgili bir sanal işlev, yani sanal işlevin geri dönebileceği herşeyin çalışıp çalışmadığını düşünüyorum. (Ve bunun prensipte işe yaramaması için bir neden göremiyorum) – Damon
@Damon Aynı şeyi düşünüyorum, ancak OP'nin sormak istediklerini açıklamasına izin verin. – juanchopanza