BT Sözlüğü › Programlama › Kopya eliminasyonu (copy elision)

Kopya eliminasyonu (copy elision)

Programlama Svenska → Güncellendi: 2026-10-10

Derleyicinin kopyalamayı ya da taşımayı tamamen atlayıp nesneyi doğrudan nihai yerinde oluşturması. C++17'den beri önemli durum bir eniyileme değil, zorunluluktur.

Geçici bir nesneyi döndürmek — return T{...}; — C++17'den itibaren hiçbir kopyalama içeremez: nesne doğrudan çağıranın belleğinde ilklenir. Kural, ne kopyalanabilen ne taşınabilen türler için bile geçerli olacak şekilde yazılmıştır; bu sayede bir fabrika işlevi std::mutex gibi bir şey döndürebilir. Adlandırılmış yerel değişken biçimi olan NRVO isteğe bağlı kalır, ama makul her derleyici bunu uygular. Yaygın tuzak, işe yarayacağını sanarak return std::move(x); yazmaktır: tam tersini yapar. İfade artık yalın bir ad olmadığı için NRVO devre dışı kalır ve hiçbir şey yapılması gerekmeyen yerde garantili bir taşıma elde edersiniz.

← Sözlüğe dön