Sadece bana operator+
& eşinin rt değerleri için this
üzerinde çalışabileceği; yani bir sınıf C
göz önüne alındığında, bunu yapmak mümkündür: Bu sadece yerinde geçici değerleri değiştirerek kopya önleyecekOperatörleri, geçici durumları önlemek için ref-niteleyici ile aşırı yüklemek mantıklı mıdır?
class C {
// ...
C operator-(const C& rhs) const & {
C result = *this;
result -= rhs;
return result;
}
C&& operator-(const C& rhs) && {
*this -= rhs;
return std::move(*this);
}
};
.
Beklediğim gibi performans sergiliyor mu? Makul bir optimizasyon mu yoksa derleyici aynı derecede hızlı kod oluşturuyor mu?
İlk sürümde zaten kopyalama ellision alabilirsiniz. Yani ikincisinin gerekli olduğundan emin değilim (eğer hiç işe yaramıyorsa, seni götüne sokar gibi hissederdim ama yanılıyor olabilirim) – Borgleader
Evet, kopya seçiminin benzer performansa yol açabileceğini hissediyorum. .. Ama sürümümün beni henüz kıçımda nasıl ısırdığını göremiyorum. (Ancak emin değilim, bu yüzden soru.) –
Nesne yaşam boyu sorunları. C && c = C() - some_C; 've' c' sarkan. –