Neden unique_ptr bir tür parametresi shared_ptr değil süre olarak deleter var't?
std::unique_ptr
şablon var iki parametre: pointee türü ve deleter türü. Bu ikinci parametre varsayılan değeri varsa, genellikle sadece std::unique_ptr<int>
gibi bir şey yazmak.
std::shared_ptr
şablonun tek parametresi vardır: pointee türü. Ama deleter türü sınıf şablonunda olsa bile bu özel bir deleter de kullanabilirsiniz. Her zamanki uygulama tipi silme teknikleri bunu yapmak için kullanır.
Aynı fikir std::unique_ptr
için kullanılan bir nedeni var mı?
CEVAP
Nedeni de shared_ptr
hakem saymaya zaten açık denetim bloğu ihtiyaçları ve deleter yapıştırıyorum üstüne o kadar büyütülecek bir şey değil. unique_ptr
ancak herhangi bir ek yük gerektirmez, ve sevilmeyen - sıfır-yük bir sınıf olmalı olacağını da sözlerine ekledi. unique_ptr
statik olması gerekiyordu.
Her zaman eğer davranışları - örneğin, unique_ptr<T, std::function<void(T*)>>
geçmişte yaptığım bir şey olabilir isterseniz üstüne kendi tür silme ekleyebilirsiniz.
Neden Java statik olarak bir sınıf bil...
Liste<Köpek> Listenin alt<Hay...
Neden değil't Veritabanı-Öneki.bö...
Neden kısa, ama int değişken değil ben...
Neden't iç içe geçmiş işlev kapan...