std::unique_ptr
sadece bir hareket yapıcı ve hiçbir kopya yapıcı veya atama operatörü sağlayarak tek sahiplik anlambilim başarır.
Size aynı türden farklı örneklerini referans birden unique_ptrs
olabileceğinden, tüm tekil bir durum değildir. Singleton, türü doğrudan oluşturmanıza izin vermez, ancak tek örneği yöneten bir erişimci sağlar. Ayrıca
,
o Drew'in iddiası "Bir unique_ptr herhangi örneğine tek akıllı işaretçi sağlıyor."
yanlıştır. sadece yaparsanız:
T* nt = new T;
std::unique_ptr<T> up1(nt);
std::unique_ptr<T> up2(nt);
o zaman aynı kaynak sahibi iki eşsiz işaretçiler var - ve sadece çalışma zamanında bir sorun fark edecektir, derleme süresi değil. Elbette bu,
unique_ptr
'un yanlış kullanımıdır, ancak bu,
unique_ptr
'un size herhangi bir şey sağlamayacağını pekiştirir, sadece kendi perspektifinden tek sahibi olan bir işaretleyici konteynır ve api yoluyla, yanlışlıkla geçici kopyalar oluşturmayı zorlaştırır .
Ayrıca, bağımsız bir şekilde, herhangi bir unique_ptr
aynı ham işaretçi/kaynak işaret diğer (akıllı) işaretçi türleri olabilir. Kaynaklarının sahiplik ve ömür boyu politikalarını ve akıllı işaretçi örneklerini tanımlamak için kullanılan kod tamamen kullanıma uygundur.
Bu sonuca nasıl ulaştığınızı anlamıyorum! –
Eh, bir 'std :: unique_ptr' ... –
juanchopanza
Sftrabbit 'tekil' ilkesini karışık bir şekilde std :: unique_ptr 'ile karıştırdım.Açıklama sağlamak için hepinize teşekkür ederim. – Mushy