Вопросы с тегом «smart-pointers»

Абстрактный тип данных, который имитирует указатель, обеспечивая при этом дополнительные функции, такие как автоматическая сборка мусора или проверка границ.

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

2
Как вернуть интеллектуальные указатели (shared_ptr) по ссылке или по значению?
Допустим, у меня есть класс с методом, который возвращает shared_ptr. Каковы возможные преимущества и недостатки возврата по ссылке или по значению? Две возможные подсказки: Раннее разрушение объекта. Если я возвращаю shared_ptrссылку by (const), счетчик ссылок не увеличивается, поэтому я рискую удалить объект, когда он выходит за пределы области видимости в …


4
Передача shared_ptr <Derived> как shared_ptr <Base>
Каков наилучший способ передать a shared_ptrпроизводного типа функции, которая принимает shared_ptra базового типа? Я обычно передаю shared_ptrs по ссылке, чтобы избежать ненужной копии: int foo(const shared_ptr&lt;bar&gt;&amp; ptr); но это не сработает, если я попытаюсь сделать что-то вроде int foo(const shared_ptr&lt;Base&gt;&amp; ptr); ... shared_ptr&lt;Derived&gt; bar = make_shared&lt;Derived&gt;(); foo(bar); Я мог бы …

3
shared_ptr магия :)
Мы с мистером Лидстремом поссорились :) Г-н Лидстрём утверждает, что конструкция shared_ptr&lt;Base&gt; p(new Derived);не требует наличия виртуального деструктора в Base: Армен Цирунян : «Правда? Будет ли shared_ptr правильно очищаться? Не могли бы вы в этом случае продемонстрировать, как этот эффект может быть реализован?» Даниэль Лидстрём : « shared_ptr использует свой …

5
Есть ли неатомарный эквивалент std :: shared_ptr? А почему его нет в <памяти>?
Это вопрос из двух частей, касающихся атомарности std::shared_ptr: 1. Насколько я могу судить, std::shared_ptrэто единственный умный указатель в &lt;memory&gt;этом атомарном. Мне интересно, есть ли std::shared_ptrдоступная неатомарная версия (я ничего не вижу &lt;memory&gt;, поэтому я также открыт для предложений, выходящих за рамки стандарта, например, в Boost). Я знаю, что boost::shared_ptrэто тоже …

7
Пример использования shared_ptr?
Привет, я сегодня задал вопрос о том, как вставлять разные типы объектов в один и тот же векторный массив, и мой код в этом вопросе был gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { …

2
Сброс слабого_птра влияет на shared_ptr?
Я не очень привык к использованию weak_ptrи столкнулся с довольно запутанной ситуацией. Я использую Intel XE 2019 Composer update 5 ( пакет 2019.5.281 ) в сочетании с Visual Studio 2019 ver. 16.2.5 . Я компилирую в 64-битной версии. Я использую стандарт C ++ 17 . Вот код для моего решения …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.