Запитання з тегом «shared-ptr»

Довідковий підрахунок класу смарт-покажчиків, що реалізує спільне право власності

17
Коли використовувати віртуальні деструктори?
Я чітко розумію більшість теорій OO, але одне, що мене дуже бентежить, - це віртуальні деструктори. Я думав, що деструктора завжди викликають незалежно від того, що стосується кожного предмета ланцюга. Коли ви повинні зробити їх віртуальними і чому?

8
Різниця в make_shared і нормальному shared_ptr в C ++
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Про це є багато публікацій google та stackoverflow, але я не в змозі зрозуміти, чому make_sharedефективніше, ніж безпосередньо використовувати shared_ptr. Може хтось пояснить мені покрокову послідовність створених об'єктів і операцій, які виконуються обома, так що я зможу зрозуміти, наскільки make_sharedце ефективно. Я наводив …
276 c++  c++11  shared-ptr 

10
Чи слід передавати shared_ptr за посиланням або за значенням?
Коли функція приймає shared_ptr(від boost або C ++ 11 STL), ви передаєте її: за посиланням const: void foo(const shared_ptr<T>& p) або за значенням void foo(shared_ptr<T> p):? Я вважаю за краще перший метод, тому що я підозрюю, що це буде швидше. Але чи справді цього варто чи є додаткові питання? Скажіть, …
270 c++  c++11  boost  shared-ptr 


16
Як мені зателефонувати :: std :: make_shared для класу із захищеними або приватними конструкторами?
У мене цей код не працює, але я думаю, що намір зрозумілий: 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(); } Але …
187 c++  c++11  shared-ptr 

2
shared_ptr до масиву: чи його слід використовувати?
Лише невеликий запит щодо shared_ptr. Чи корисно використовувати shared_ptrвказівку на масив? Наприклад, shared_ptr<int> sp(new int[10]); Якщо ні, то чому б ні? Однією з причин, про яку я вже знаю, є не можна збільшувати / зменшувати shared_ptr. Отже, його не можна використовувати як звичайний вказівник на масив.
172 c++  c++11  shared-ptr 

2
Використання розумних покажчиків для учнів класу
У мене виникають проблеми з розумінням використання смарт-покажчиків як членів класу в C ++ 11. Я багато читав про розумні покажчики і, думаю, я розумію, як unique_ptrі shared_ptr/ weak_ptrв цілому працювати. Що я не розумію, це справжнє використання. Схоже, всі рекомендують використовувати unique_ptrяк шлях, який потрібно пройти майже весь час. …

6
Чому б я std :: перемістити std :: shared_ptr?
Я переглядав вихідний код Clang і знайшов цей фрагмент: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Чому я хочу ?std::movestd::shared_ptr Чи є якась точка передачі права власності на спільний ресурс? Чому б я просто не зробив це замість цього? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }

6
Чому робота std :: shared_ptr <void>
Я знайшов код за допомогою std :: shared_ptr для довільної очищення при відключенні. Спочатку я думав, що цей код не може працювати, але потім я спробував таке: #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; …
129 c++  c++11  shared-ptr 

4
Різниця між `const shared_ptr <T>` та `shared_ptr <const T>`?
Я пишу метод аксесуара для спільного вказівника на C ++, який виглядає приблизно так: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar&gt; m_bar; } Отже, для підтримки константності getBar()повернення типу повинно бути таке, boost::shared_ptrщо не дозволяє модифікувати Barйого, на які вказує. Я здогадуюсь , що …
116 c++  boost  const  shared-ptr 

17
C ++ - передача посилань на std :: shared_ptr або boost :: shared_ptr
Якщо у мене є функція, з якою потрібно працювати з a shared_ptr, чи не було б більш ефективно передавати посилання на нього (щоб уникнути копіювання shared_ptrоб'єкта)? Які можливі погані побічні ефекти? Я передбачаю два можливі випадки: 1) всередині функції робиться копія аргументу, як у ClassA::take_copy_of_sp(boost::shared_ptr&lt;foo&gt; &amp;sp) { ... m_sp_member=sp; //This …

3
std :: shared_ptr пояснено безпеку потоку
Я читаю http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html, а деякі проблеми безпеки потоку для мене все ще не зрозумілі: Стандарт гарантує, що підрахунок посилань обробляється безпечним потоком, і це незалежно від платформи, правда? Аналогічна проблема - стандартні гарантії того, що лише один потік (з останнім посиланням) буде викликати видалення на спільному об'єкті, правда? shared_ptr не …
106 c++  c++11  shared-ptr 

4
Де поділяється_ptr?
Я так засмучений зараз через кілька годин, намагаючись знайти місце, де знаходиться спільний_ptr. Жоден із прикладів, які я бачу, не містить повного коду, щоб включити заголовки для shared_ptr(та працюючих). Просто констатуючи std, tr1і &lt;memory&gt;зовсім не допомагає! Я завантажив прискорення, і все, але все ще не відображається! Чи може хтось мені …

2
std :: shared_ptr цього
Зараз я намагаюся навчитися користуватися розумними вказівниками. Однак, проводячи деякі експерименти, я виявив наступну ситуацію, для якої не міг знайти насичуючого рішення: Уявіть, у вас є об'єкт класу A, який є батьком об'єкта класу B (дочірній), але обидва повинні знати один одного: class A; class B; class A { public: …

2
Чому shared_ptr <void> легальний, а unique_ptr <void> неправильно сформований?
Питання справді вкладається в заголовок: мені цікаво знати, в чому полягає технічна причина цієї різниці, а також обгрунтування? std::shared_ptr&lt;void&gt; sharedToVoid; // legal; std::unique_ptr&lt;void&gt; uniqueToVoid; // ill-formed;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.