«smart-pointer» etiketlenmiş sorular

11
Akıllı işaretçiler varsa neden Çöp Toplama
Bugünlerde pek çok dil çöp toplanıyor. C ++ için üçüncü şahıslar tarafından bile kullanılabilir. Fakat C ++ 'da RAII ve akıllı işaretçiler var. Peki, çöp toplama kullanmanın amacı nedir? Fazladan bir şey mi yapıyor? Ve C # gibi diğer dillerde, eğer tüm referanslar akıllı işaretçiler olarak kabul edilirse (RAII'yi bir …

9
std :: shared_ptr son çare olarak?
Sadece "Going Native 2012" yayınlarını izliyordum ve hakkında bir tartışma gördüm std::shared_ptr. Bjarne'nin olumsuz görüşlerini std::shared_ptrve bir nesnenin yaşam süresi belirsiz olduğunda (buna göre, nadiren bunun olması gerektiğine inanıyorum), bunun “son çare” olarak kullanılması gerektiği şeklindeki görüşünü duyduğuma biraz şaşırdım . Bunu daha derinlemesine açıklamak isteyen var mı? std::shared_ptrNesneleri ömür …

1
raw, weak_ptr, unique_ptr, shared_ptr vb… Bunları akıllıca nasıl seçersiniz?
C ++ 'da çok fazla işaretçi var ancak C ++ programlamada (özellikle Qt Framework ile) 5 yıl kadar dürüst olmak gerekirse, sadece eski ham işaretçiyi kullanıyorum: SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); Bir sürü "akıllı" işaretçi olduğunu biliyorum: // shared pointer: shared_ptr<SomeKindofObject> Object; // unique pointer: unique_ptr<SomeKindofObject> Object; // weak pointer: …

5
Java / C # neden RAII uygulayamıyor?
Soru: Java / C # neden RAII uygulayamıyor? Açıklama: Çöp toplayıcının deterministik olmadığını biliyorum. Dolayısıyla, geçerli dil özellikleri ile bir nesnenin Dispose () yönteminin kapsam çıkışında otomatik olarak çağrılması mümkün değildir. Ancak böyle belirleyici bir özellik eklenebilir mi? Benim anlayış: RAII uygulamasının iki gereksinimi karşılaması gerektiğini düşünüyorum: 1. Bir kaynağın …

5
C ++: Sınıf bağımlılıklarına sahip olmalı veya bağımlılıklarına dikkat etmeli mi?
Diyelim ki sınıfı Foobarkullanan (bağlı) bir sınıfım var Widget. İyi günlerde, polimorfik davranış gerekiyorsa Widgetwolud bir alan olarak Foobarveya belki de akıllı bir işaretçi olarak ilan edilir ve yapıcıda başlatılır: class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // or std::unique_ptr<Widget> widget; public: Foobar() : widget(std::make_unique<Widget>(blah …

3
Büyük bir listeyi tahrip etmek yığımı taşacak mı?
Aşağıdaki tek bağlantılı liste uygulamasını düşünün: struct node { std::unique_ptr<node> next; ComplicatedDestructorClass data; } Şimdi diyelim std::unique_ptr<node> headki daha sonra kapsam dışı olan ve yıkıcısının çağrılmasına neden olan bir örneği kullanmayı bırakıyorum. Bu, yığınımı yeterince büyük listeler için patlatacak mı? Adil derleyici (inline oldukça karmaşık optimizasyon yapacak varsaymak mı unique_ptr'içine …

1
Modern C ++ 'a anahtar / değer deposu geliştirme
Cassandra'ya benzer bir veritabanı sunucusu geliştiriyorum. C'de gelişme başladı, ancak sınıflar olmadan işler çok karmaşık hale geldi. Şu anda her şeyi C ++ 11'de taşıdım, ancak hala "modern" C ++ öğreniyorum ve birçok şey hakkında şüphem var. Veritabanı Anahtar / Değer çiftleriyle çalışacaktır. Her çiftin daha fazla bilgisi vardır - …

4
Deterministik Olmayan Kaynak Yönetimi Sızdıran Bir Soyutlama mı?
Görebildiğim kadarıyla, kaynak yönetiminin iki yaygın biçimi vardır: deterministik yıkım ve açık. İlki örnekleri C ++ yıkıcıları ve akıllı işaretçiler ya da Perl'in DESTROY alt grubu, ikincisinin bir örneği Ruby'nin kaynakları yönetecek blok paradigması ya da .NET'in IDispose arayüzü olacaktır. Yeni diller, belki de referans olmayan sayma çeşitliliğinin çöp toplama …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.