Geleneksel C ++ 'da, değere göre işlevlere ve yöntemlere geçmek büyük nesneler için yavaştır ve genellikle kaşlarını çatır. Bunun yerine, C ++ programcıları referansları aktarma eğilimindedir, bu da daha hızlıdır, ancak sahiplik ve özellikle bellek yönetimi hakkında her türlü karmaşık soruyu ortaya çıkarır (nesnenin yığın halinde ayrılması durumunda)
Şimdi, C ++ 11'de Rvalue referanslarımız ve hareket yapıcılarımız var, bu std::vector
da bir fonksiyonun değerine ve fonksiyonunun dışına geçmek için ucuz olan büyük bir nesneyi (an gibi ) uygulamak anlamına geliyor .
Öyleyse, bu, varsayılan gibi std::vector
ve gibi tür örnekleri için değere göre geçilmesi gerektiği anlamına std::string
mı geliyor? Özel nesneler ne olacak? Yeni en iyi uygulama nedir?
const std::string&
bir kopya olarak değil aldı . İlk iş parçacığı daha sonra ...
pass by reference ... which introduces all sorts of complicated questions around ownership and especially around memory management (in the event that the object is heap-allocated)
. Mülkiyet için ne kadar karmaşık veya sorunlu olduğunu anlamıyorum? Bir şey kaçırmış olabilir miyim?