Обзор библиотеки Boost — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
м
Строка 3: Строка 3:
 
== Умные указатели ==
 
== Умные указатели ==
  
Все рассмотренные в прошлом семестре <<умные> указатели представлены
+
Все рассмотренные в прошлом семестре <<умные> указатели [http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm представлены
в [http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm библиотеке] Boost.
+
в библиотеке Boost.
  
 
* <code>scoped_ptr</code> и <code>scoped_array</code>,
 
* <code>scoped_ptr</code> и <code>scoped_array</code>,
 
* <code>shared_ptr</code> и <code>shared_array</code>,
 
* <code>shared_ptr</code> и <code>shared_array</code>,
* <code>weak_ptr</code> --- ссылка на объект, который находится под управлением <code>shared_ptr</code>.
+
* <code>weak_ptr</code> --- ссылка на объект, который находится под управлением <code>shared_ptr</code>. Следует отметить, что через этот указатель нельзя обратиться к объекту напрямую --- можно только создать <code>shared_ptr</code>, указывающий на этот объект, с помощью метода <code>lock()</code> --- если объект уже уничтожен, то возвращается пустой <code>shared_ptr</code>.
Следует отметить, что через этот указатель нельзя обратиться к объекту напрямую --- можно только создать
+
* <code>intrusive_ptr<T></code> --- аналог <code>shared_ptr<T></code>; требует, чтобы у типа <code>T</code> были определены методы intrusive_ptr_add_ref() и intrusive_ptr_release(). У <code>intrusive_ptr</code>, по крайней мере, два преимущества перед <code>shared_ptr</code>:
<code>shared_ptr</code>, указывающий на этот объект, с помощью метода <code>lock()</code> --- если объект
+
уже уничтожен, то возвращается пустой <code>shared_ptr</code>.
+
* <code>intrusive_ptr<T></code> --- аналог <code>shared_ptr<T></code>; требует, чтобы у типа <code>T</code>
+
были определены методы intrusive_ptr_add_ref() и intrusive_ptr_release(). У <code>intrusive_ptr</code>, по
+
крайней мере, два преимущества перед <code>shared_ptr</code>:
+
 
   * размер объекта <code>intrusive_ptr</code> совпадает с размером указателя,
 
   * размер объекта <code>intrusive_ptr</code> совпадает с размером указателя,
 
   * объекта <code>intrusive_ptr<T></code> можно проинициализировать <code>T*</code>.
 
   * объекта <code>intrusive_ptr<T></code> можно проинициализировать <code>T*</code>.

Версия 11:16, 31 мая 2011

Мы рассмотрим несколько полезных модулей библиотеки Boost,

Умные указатели

Все рассмотренные в прошлом семестре <<умные> указатели [http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm представлены в библиотеке Boost.

  • scoped_ptr и scoped_array,
  • shared_ptr и shared_array,
  • weak_ptr --- ссылка на объект, который находится под управлением shared_ptr. Следует отметить, что через этот указатель нельзя обратиться к объекту напрямую --- можно только создать shared_ptr, указывающий на этот объект, с помощью метода lock() --- если объект уже уничтожен, то возвращается пустой shared_ptr.
  • intrusive_ptr<T> --- аналог shared_ptr<T>; требует, чтобы у типа T были определены методы intrusive_ptr_add_ref() и intrusive_ptr_release(). У intrusive_ptr, по крайней мере, два преимущества перед shared_ptr:
 * размер объекта intrusive_ptr совпадает с размером указателя,
 * объекта intrusive_ptr<T> можно проинициализировать T*.