C++ 11'den önce, büyük nesneler üzerinde çalışan bir işlevim varsa, içgüdü, bu tür bir prototip ile işlev yazmak olurdu.C++ 11'de, bir fonksiyonun çıktısını kabul edecek bir nesneye referansta geçmek için hala bir ihtiyaç var mı?
void f(A &return_value, A const ¶meter_value);
, C++ 11 yılında
(Burada, dönen_değer. A kopyalamak için büyük ve pahalı sadece bazı sınıftır. Işlevin çıktısını alacak sadece boş bir nesnedir) alarak hareket semantik avantajı, varsayılan öneri (Anladığım kadarıyla) daha basittir:
A f(A const ¶meter_value);
bunu eski şekilde yapmaya ihtiyaç dönen değeri bir nesne geçirmeden hala hiç var mı?
Varsayılan öneri her zaman "uygun olanı yap ve gerekli bulursanız yoldan çık" olduğunu düşündüm ... – Mehrdad
Böyle bir gereksinim olmadı, http://cpp-next.com/ adresine bakın. arşivi/2009/08/want-speed-pass-by-value/ –
@ K-ballo: Standartlara ihtiyaç vardı (insanlar bunu kabul etmese de, C++ standardize edilmeden yaklaşık 20 yıl önce vardı) . Belki de olmasa da, C++ 'yı standardizasyon zamanı hakkında öğrenmeye yeni başlamıştım (ve o zamanlar bunun gerçekleştiğini bile bilmiyordum), standarttan önce kopya eliti diye bir şey var mıydı? Popüler derleyiciler tarafından kullanılmış mıydı? –