Вопросы по теме 'smart-pointers'
Умные указатели: кому принадлежит объект?
С ++ - это все о владении памятью - также известной как семантика владения .
Освобождение этой памяти является обязанностью владельца фрагмента динамически выделяемой памяти. Таким образом, действительно возникает вопрос, кому принадлежит память....
57302 просмотров
schedule
04.07.2023
Стандартный контейнер 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 просмотров
schedule
06.08.2023
Класс STL для указателей с подсчетом ссылок?
Это должно быть тривиально, но я не могу его найти (если только такого класса не существует!)
Что такое класс STL (или набор классов) для интеллектуальных указателей?
ОБНОВЛЕНИЕ
Спасибо за ответы, Должен сказать, я удивлен отсутствием...
8351 просмотров
schedule
29.12.2022
Большое количество объектов sp_counted_impl_p
Я только что выполнил профилирование распределения о том, сколько объектов каждого типа находится в мое заявление. Я широко использую boost :: shared_ptr.
Я обнаружил большое количество выделенных объектов sp_counted_impl_p, каждый из которых...
395 просмотров
schedule
19.05.2023
Есть ли интеллектуальный указатель, который автоматически обнуляется, когда его цель уничтожается в С++?
Я нашел QPointer . Есть ли другие?
489 просмотров
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 просмотров
schedule
27.07.2023
Почему оператор-› может быть перегружен вручную?
Разве не было бы смысла, если бы p->m было просто синтаксическим сахаром для (*p).m ? По сути, каждый operator-> , который я когда-либо писал, мог быть реализован следующим образом:
Foo::Foo* operator->()
{
return &**this;
}...
482 просмотров
schedule
03.05.2022
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 просмотров
schedule
06.06.2022
Любое попадание в разыменование 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 просмотров
schedule
09.05.2023