Вопросы по теме 'smart-pointers'

Умные указатели: кому принадлежит объект?
С ++ - это все о владении памятью - также известной как семантика владения . Освобождение этой памяти является обязанностью владельца фрагмента динамически выделяемой памяти. Таким образом, действительно возникает вопрос, кому принадлежит память....
57302 просмотров

Стандартный контейнер boost::shared_ptr
Предположим, у меня есть класс foo, и я хочу использовать std::map для хранения некоторого boost::shared_ptrs, например: class foo; typedef boost::shared_ptr<foo> foo_sp; typeded std::map<int, foo_sp> foo_sp_map; foo_sp_map m;...
7392 просмотров
schedule 06.02.2024

Как я могу использовать ковариантные возвращаемые типы с интеллектуальными указателями?
У меня такой код: class RetInterface {...} class Ret1: public RetInterface {...} class AInterface { public: virtual boost::shared_ptr<RetInterface> get_r() const = 0; ... }; class A1: public AInterface { public:...
16471 просмотров
schedule 16.04.2022

умные указатели + это считается вредным?
В проекте C ++, который использует интеллектуальные указатели, такие как boost::shared_ptr , какова хорошая философия проектирования в отношении использования « this »? Считают, что: Опасно хранить необработанный указатель, содержащийся в...
4754 просмотров
schedule 21.09.2022

Помогите мне сделать этот код безопасным для исключений
Итак, у меня есть этот код библиотеки, см.... class Thing { public: class Obj { public: static const int len = 16; explicit Obj(char *str) { strncpy(str_, str, len); } virtual...
356 просмотров

Класс STL для указателей с подсчетом ссылок?
Это должно быть тривиально, но я не могу его найти (если только такого класса не существует!) Что такое класс STL (или набор классов) для интеллектуальных указателей? ОБНОВЛЕНИЕ Спасибо за ответы, Должен сказать, я удивлен отсутствием...
8351 просмотров

Большое количество объектов sp_counted_impl_p
Я только что выполнил профилирование распределения о том, сколько объектов каждого типа находится в мое заявление. Я широко использую boost :: shared_ptr. Я обнаружил большое количество выделенных объектов sp_counted_impl_p, каждый из которых...
395 просмотров
schedule 19.05.2023

schedule 25.01.2023

Есть ли класс интеллектуального указателя Boost, который можно настроить так, чтобы он не удалялся при уничтожении?
У меня есть список умных указателей. Я хочу, чтобы некоторые из этих интеллектуальных указателей действовали как обычные указатели, то есть они просто являются ссылкой на экземпляр и не участвуют в его освобождении. Например, они могут указывать на...
1088 просмотров
schedule 01.12.2022

Следует ли смешивать указатель this и интеллектуальные указатели?
Как мне избежать использования указателя this в сочетании с интеллектуальными указателями? Есть ли какие-либо шаблоны проектирования / общие предложения по решению этой проблемы? Я предполагаю, что объединение этих двух вариантов недопустимо, так...
1509 просмотров
schedule 03.05.2022

Могу ли я получить необработанный указатель из weak_ptr boost?
Можно ли получить необработанный указатель из boost::weak_ptr? Shared_ptr Boost имеет метод get() и оператор «->». Есть ли какое-то объяснение тому, что у weak_ptr нет такой же функциональности?
5983 просмотров

Почему оператор-› может быть перегружен вручную?
Разве не было бы смысла, если бы p->m было просто синтаксическим сахаром для (*p).m ? По сути, каждый operator-> , который я когда-либо писал, мог быть реализован следующим образом: Foo::Foo* operator->() { return &**this; }...
482 просмотров

C ++ 0x unique_ptr заменяет scoped_ptr на владение?
Раньше я писал такой код: class P {}; class Q: public P {}; class A { // takes ownership A(P* p): p_(p) {} scoped_ptr<P> p_; }; A a(new Q); С C ++ 0x следует переписать класс A как: class A { // takes ownership...
15884 просмотров
schedule 24.09.2022

Правильный способ инициализации массива boost::scoped_ptr?
У меня есть класс с массивом указателей на объекты, которые НЕ имеют конструктора по умолчанию. Единственный способ, который я нашел для их "инициализации", - это использовать swap() следующим образом: class Bar { Bar(char * message) {}; }...
3878 просмотров
schedule 25.11.2022

Является ли дескриптор тем же самым, что и умный указатель?
Я почти закончил ускоренный C++ Koenig & Moo, и в главах 13 и 14 они излагают идею и реализацию нескольких классов Handle (простых, общих, с подсчетом ссылок). Классы инкапсулируют необработанный указатель и абстрагируют выделение/освобождение...
562 просмотров
schedule 29.07.2022

shared_ptr магия :)
Mr. Мы с Лидстремом поругались :) Г-н Лидстрём утверждает, что конструкция shared_ptr<Base> p(new Derived); не требует, чтобы у Base был виртуальный деструктор: Армен Цирунян : «Серьезно? Будет ли shared_ptr очищаться...
15630 просмотров
schedule 30.04.2023

Проблема clone_ptr, мне нужно создать объект копирования, используя функцию библиотеки вместо нового
Я немного новичок в шаблонах на С++, поэтому простите меня, если этот вопрос сбивает с толку или глуп, у меня просто есть проблема, когда я хочу реализовать интеллектуальный указатель клонирования, поэтому мне не нужно создавать конструкторы...
308 просмотров
schedule 27.04.2023

Определение типа шаблона внутри конструктора копирования не работает
Немного предыстории: я пишу интеллектуальный указатель на основе политики (например, SmartPtr в библиотеке Loki), который может иметь деструктивную семантику копирования, например auto_ptr. Следовательно, он должен иметь конструктор копии шаблона,...
514 просмотров

Любое попадание в разыменование std::tr1:shared_ptr по сравнению с разыменованием голого указателя?
Я понимаю, что существует (иногда значительный) удар по производительности при создании, назначении, копировании и уничтожении std::tr1::shared_ptr или boost::shared_ptr (из-за механизмов подсчета ссылок). Верно ли, что после создания доступ к...
981 просмотров
schedule 11.01.2024

Политики интеллектуальных указателей C++11
Насколько я понимаю, в текущей спецификации С++ 11 следует использовать: std::unique_ptr<> на одного владельца (чаще всего) std::shared_ptr<> только при наличии нескольких владельцев в ациклической структуре...
7271 просмотров