Ne kopyası elision ve değer optimizasyonu dönüş?
Kopya elision nedir? (Adlı) değeri optimizasyon getirisi ne olacak? Onlar manası nedir?
Hangi durumlarda oluşabilir? Kısıtlamaları nelerdir?
- Eğer bu soru için başvurulan olsaydı, muhtemelen the introduction arıyoruz.
- Teknik bir bakış için the standard reference bkz.
- common cases here bkz.
CEVAP
Giriş
- skip to this answer teknik bir genel bakış için.
Elision kopyasını ortak durumlarda ortaya çıkar - skip to this answer.
Kopya elision bir optimizasyon çoğu derleyici tarafından bazı durumlarda (potansiyel olarak) pahalı ekstra kopyalar önlemek için kullanılır. Değeri tarafından iade yapar ya da by-pass değer mümkün pratikte (kısıtlamalar geçerlidir).
Elides optimizasyon (ha!) tek şekli. -eğer bu kuralkopya elision eğer nesne hareket kopyalama/yan etkileri varsa bile uygulanabilir.
Aşağıdaki örnek Wikipedia: alınan
struct C {
C() {}
C(const C&) { std::cout << "A copy was made.\n"; }
};
C f() {
return C();
}
int main() {
std::cout << "Hello World!\n";
C obj = f();
}
Derleyici ve ayarlarına bağlı olarak, aşağıdaki çıktılartüm geçerli:
Merhaba Dünya!
Merhaba Dünya!
Merhaba Dünya!
Bu da daha az nesneleri oluşturulabilir anlamına gelir, aynı zamanda yıkıcı çağrıldığını belirli sayıda güvenebilirsiniz. Aradı, onlar güvenemezsin olarak kopyala/-kurucular hareket ya da yıkıcı içindeki kritik mantık sahibi olmamalısın.
Eğer bir kopyalama veya taşıma yapıcı bir çağrı elided, kurucu bulunması ve erişilebilir olması gerekir. Bu kopya elision normalde copyable özel veya silinmiş bir kopya var çünkü, örneğin olmayan nesneler kopyalanıyor yapıcı hareket/izin vermez sağlar.
İki ve daha fazla değer bir yöntem dön...
Dönüş bash script değer...
Neden derleyici bir hata üretmeden değ...
C : dönüş değeri L-değer mi?...
Nasıl her yerde SQL Server Veritabanın...