Результаты поиска по запросу "smart-pointers"

1 ответ

howardhinnant.github.io/incomplete.html

опытке использоватьauto_ptr с типом, который был объявлен с предварительным объявлением, как это: class A; ... std::auto_ptr<A> a;деструкторA не называется (видимо, потому чтоauto_ptr внутреннеdeletes базовый указатель и деструктор для неполного ...

4 ответа

Я пришел сюда, потому что нашел документацию надстройки слишком страшной.

разница между следующим набором указателей? Когда вы используете каждый указатель в рабочем коде, если вообще? Примеры будут оценены! scoped_ptr shared_ptr weak_ptr intrusive_ptr Вы используете повышение в производственном коде?

2 ответа

Я согласен, дополнительная документация и неоднозначность того, что означает передача необработанного указателя, являются недостатками.

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

ТОП публикаций

5 ответов

источник кузница

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

3 ответа

Любое объяснение по поводу голосования?

я есть простой базовый и производный класс, который я хочу, чтобы обаshared_from_this(). Это простое решение: class foo : public enable_shared_from_this<foo> { void foo_do_it() { cout<<"foo::do_it\n"; } public: virtual function<void()> ...

7 ответов

Тем не менее, для временного и легкого использования, сырые указатели хороши.

прочтенияэтот ответ [https://stackoverflow.com/questions/2585247/code-reading-where-can-i-read-great-modern-and-well-documented-c-code/2585397#2585397] похоже, это лучшая практика для использованияумные ...

2 ответа

@ Натан: это имеет значение. Это не просто деструктор. Процедуры выделения памяти зависят от того, удаляете ли вы память с помощью соответствующего метода выделения. Таким образом, new / delete и new [] / delete [] являются совпадающими парами.

мные указатели обрабатывают массивы? Например, void function(void) { std::unique_ptr<int> my_array(new int[5]); }когдаmy_array выходит из области видимости и разрушается, весь ли массив целых чисел повторно заявлен? Только первый элемент массива ...

4 ответа

Или же

м недавно я переключил язык моего проекта на использование C ++ с C. В C я использовал malloc, и после этого я проверял, был ли malloc успешным, но в C ++ я использую «new» для выделения памяти, и я хотел бы знать, как вы обычно проверяет сбой ...

4 ответа

@DeadMG, да. Я не сразу запомнил эти функции, но что-то похожее на них. Что касается исключения, хорошо, просто была идея о том, как обрабатывать различия в типах через промежуточный этап.

+ мы можем сделать это: struct Base { virtual Base* Clone() const { ... } virtual ~Base(){} }; struct Derived : Base { virtual Derived* Clone() const {...} //overrides Base::Clone }; Тем не менее, следующее не будет делать то же самое: struct ...

2 ответа

 выполняет одно выделение достаточно большого размера, а затем создает на месте как счетчик, так и объект.

оренном докmake_shared [http://www.boost.org/doc/libs/1_47_0/libs/smart_ptr/make_shared.html], это говорит: Помимо удобства и стиля, такая функция также безопасна для исключения и значительно быстрее, потому что она может использоватьединое ...