«shared-ptr» etiketlenmiş sorular

Başvuru, paylaşılan sahipliği uygulayan akıllı işaretçi sınıfını saydı


8
C ++ 'da make_shared ve normal shared_ptr arasındaki fark
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Birçok google ve stackoverflow yayınları bu konuda, ama neden make_shareddoğrudan kullanmaktan daha verimli olduğunu anlayamıyorum shared_ptr. Birisi bana nasıl yaratılmış olduğunu ve her ikisi tarafından yapılan işlemleri adım adım açıklayabilir miyim böylece nasıl make_sharedverimli olduğunu anlayabiliyorum . Referans için yukarıda bir örnek verdim.
276 c++  c++11  shared-ptr 

10
Bir paylaşılan_ptr değerini referans veya değere göre geçmeli miyiz?
Bir işlev bir shared_ptr(boost veya C ++ 11 STL'den) aldığında , geçiyor musunuz: const referansı ile: void foo(const shared_ptr<T>& p) veya değerine göre: void foo(shared_ptr<T> p)? İlk yöntemi tercih ederim çünkü daha hızlı olacağından şüpheleniyorum. Ama bu gerçekten buna değer mi yoksa başka sorunlar var mı? Lütfen seçiminizin nedenlerini veya …
270 c++  c++11  boost  shared-ptr 


16
Yalnızca korumalı veya özel kurucuları olan bir sınıfta :: std :: make_shared'i nasıl arayabilirim?
Ben işe yaramazsa bu kodu var, ama niyet açık olduğunu düşünüyorum: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); } Ama derlediğimde …
187 c++  c++11  shared-ptr 

2
bir diziyle paylaşılan_ptr: kullanılmalı mı?
İle ilgili sadece küçük bir sorgu shared_ptr . shared_ptrBir diziyi göstermeyi kullanmak iyi bir uygulama mı? Örneğin, shared_ptr<int> sp(new int[10]); Eğer değilse, peki neden değil? Zaten farkında olduğum bir nedeni, arttıramaz / azaltamaz shared_ptr. Bu nedenle, bir diziye normal bir işaretçi gibi kullanılamaz.
172 c++  c++11  shared-ptr 

2
Sınıf üyeleri için akıllı işaretçiler kullanma
C ++ 11 sınıf üyeleri olarak akıllı işaretçi kullanımını anlamakta sorun yaşıyorum. Akıllı işaretçiler hakkında çok şey okudum unique_ptrve genel olarak nasıl ve shared_ptr/ nasıl weak_ptrçalıştığını anladığımı düşünüyorum . Anlamadığım şey gerçek kullanımdır. Herkesin unique_ptrneredeyse her zaman gitmek için bir yol olarak kullanılmasını önerdiği görülüyor . Ama böyle bir şeyi …

6
Neden std :: bir std :: shared_ptr taşıyayım?
Clang kaynak koduna bakıyordum ve şu pasajı buldum: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Neden isteyeyim std::movebir std::shared_ptr? Paylaşılan bir kaynakta sahipliği aktaran herhangi bir nokta var mı? Neden bunun yerine bunu yapmayayım? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }

6
Std :: shared_ptr <void> neden çalışır?
Kapatma sırasında rastgele temizleme gerçekleştirmek için std :: shared_ptr kullanarak bazı kodlar buldum. İlk başta bu kodun işe yaramayacağını düşündüm, ama sonra aşağıdakileri denedim: #include &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vector&gt; class test { public: test() { std::cout &lt;&lt; "Test created" &lt;&lt; std::endl; } ~test() { std::cout &lt;&lt; "Test destroyed" &lt;&lt; …
129 c++  c++11  shared-ptr 

4
"Const shared_ptr <T>" ve "shared_ptr <const T>" arasındaki fark nedir?
C ++ 'da paylaşılan bir işaretçi için aşağıdaki gibi bir erişimci yöntemi yazıyorum: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar&gt; m_bar; } Dolayısıyla getBar(), dönüş türünün sabitliğini desteklemek için boost::shared_ptr, Barişaret ettiği değişikliklerin değiştirilmesini engelleyen bir olmalıdır . Benim tahminim ki shared_ptr&lt;const Bar&gt;ben oysa, …
116 c++  boost  const  shared-ptr 

17
C ++ - başvuruları std :: shared_ptr veya boost :: shared_ptr'ye iletme
A ile çalışması gereken bir işleve shared_ptrsahipsem, ona bir referans iletmek ( shared_ptrnesneyi kopyalamaktan kaçınmak için) daha verimli olmaz mıydı ? Olası kötü yan etkiler nelerdir? İki olası durum öngörüyorum: 1) işlevin içinde argümanın bir kopyası yapılır, örneğin ClassA::take_copy_of_sp(boost::shared_ptr&lt;foo&gt; &amp;sp) { ... m_sp_member=sp; //This will copy the object, incrementing refcount …


3
std :: shared_ptr iş parçacığı güvenliği açıklandı
Okuduğum http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html ve bazı iş parçacığı güvenlik sorunları hala benim için açık değildir: Standart, referans sayımının iş parçacığı açısından güvenli olduğunu ve platformdan bağımsız olduğunu garanti eder, değil mi? Benzer sorun - standart, yalnızca bir iş parçacığının (son referansı tutan) paylaşılan nesnede silme çağrısı yapacağını garanti eder, değil mi? shared_ptr, …
106 c++  c++11  shared-ptr 

2
std :: shared_ptr bunun
Şu anda akıllı işaretçilerin nasıl kullanılacağını öğrenmeye çalışıyorum. Ancak bazı deneyler yaparken doyurucu bir çözüm bulamadığım şu durumu keşfettim: B sınıfından bir nesnenin (çocuk) ebeveyni olan A sınıfı bir nesneniz olduğunu düşünün, ancak her ikisi de birbirini tanımalıdır: class A; class B; class A { public: void addChild(std::shared_ptr&lt;B&gt; child) { …

4
Shared_ptr nerede?
Shared_ptr'nin nerede olduğunu bulmaya çalıştıktan birkaç saat sonra şu anda çok sinirliyim. Gördüğüm örneklerin hiçbiri, başlıkları içeren shared_ptr(ve çalışan) tam kod göstermiyor . Basitçe belirterek std, tr1ve &lt;memory&gt;hiç yardımcı olmuyor! Takviyeleri indirdim ve hepsi ama yine de görünmüyor! Birisi tam olarak nerede bulacağımı söyleyerek bana yardım edebilir mi? Hayal kırıklıklarımı …

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.