Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template weak_ptr

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Indexes and Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template weak_ptr

boost::interprocess::weak_ptr

Synopsis

// In header: <boost/interprocess/smart_ptr/weak_ptr.hpp>
template<typename T, typename A, typename D> 
class weak_ptr {
public:
  // types
  typedef T element_type;
  typedef T value_type;  
  // construct/copy/destruct
  weak_ptr();
  template<typename Y> weak_ptr(weak_ptr< Y, A, D > const &);
  template<typename Y> weak_ptr(shared_ptr< Y, A, D > const &);
  template<typename Y> weak_ptr & operator=(weak_ptr< Y, A, D > const &);
  template<typename Y> weak_ptr & operator=(shared_ptr< Y, A, D > const &);
  // public member functions
  shared_ptr< T, A, D > lock() const;
  long use_count() const;
  bool expired() const;
  void reset();
  void swap(this_type &);
};

Description

слабый_ptrшаблон класса хранит «слабую ссылку» на объект, который уже управляетсяshared_ptr. Для доступа к объекту слабый_ptrможет быть преобразован в общий_ptr.Использованиеshared_ptrКонструктор или блокировка функции элемента. Когда последнийshared_ptrуходит к объекту и объект удаляется, попытка получитьshared_ptrотweak_ptrнеудачна: конструктор бросит исключение типа bad_weak_ptr, а weak_ptr::lock вернет пустоеShared_ptr.

Каждыйweak_ptrотвечает требованиям CopyConstructible и Assignable Стандартной библиотеки C++ и поэтому может использоваться в стандартных библиотечных контейнерах. Операторы сравнения поставляются так, чтоweak_ptrработает с ассоциативными контейнерами стандартной библиотеки.

слабые_ptrоперации никогда не бросают исключений.

Шаблон класса параметризован по T, типу объекта, на который он указывает.

weak_ptr public construct/copy/destruct

  1. <
    weak_ptr();
    >

    Эффекты: Построение пустого<weak_ptr>. Пост-условия: use_count() == 0.

  2. <
    template<typenameY>weak_ptr(weak_ptr<Y,A,D>const&r);
    >

    Эффекты: Если r пуст, строится пустое<weak_ptr>; в противном случае строится<weak_ptr>, которое разделяет право собственности с r, как если бы путем хранения копии указателя, хранящегося в r.

    Постусловия: use_count() == r.use_count().

    Бросает: ничего.

  3. <
    template<typenameY>weak_ptr(shared_ptr<Y,A,D>const&r);
    >

    Эффекты: Если r пуст, строится пустое<weak_ptr>; в противном случае строится<weak_ptr>, который разделяет право собственности с r, как если бы он хранил копию указателя, хранящегося в r

    .

    Постусловия: use_count() == r.use_count().

    Бросок: ничего.

  4. <
    template<typenameY>weak_ptr&operator=(weak_ptr<Y,A,D>const&r);
    >

    Эффекты: Эквивалент слабому_ptr(r)swap(*this).

    Бросок: ничего.

    Примечания: Реализация свободна для удовлетворения последствий (и подразумеваемых гарантий) с помощью различных средств, без создания временного.

  5. <
    template<typenameY>weak_ptr&operator=(shared_ptr<Y,A,D>const&r);
    >

    Эффекты: Эквивалент слабому_ptr(r)swap(*this).

    Бросает: ничего.

    Примечания: Реализация свободна для удовлетворения последствий (и подразумеваемых гарантий) с помощью различных средств, без создания временного.

weak_ptr public member functions

  1. <
    shared_ptr<T,A,D>lock()const;
    >

    Возвращение: истек()? shared_ptr(): shared_ptr(*this).

    Бросок: ничего.

  2. <
    longuse_count()const;
    >

    Возвращение: 0 если *это пусто; в противном случае, количество<shared_ptr>объектов, которые разделяют право собственности с *это.

    Бросок: ничего.

    Примечание: использование_count() не обязательно эффективно. Используйте только для отладки и тестирования, а не для производственного кода.

  3. <
    boolexpired()const;
    >

    Возврат: Возврат: use_count() == 0.

    Бросок: ничего.

    Примечания: просроченный() может быть быстрее, чем используйте_count().

  4. <
    voidreset();
    >

    Эффекты: Эквивалентно: слабый_ptr(.swap(*this).

  5. <
    voidswap(this_type&other);
    >

    Эффекты: Обменяется содержанием двух умных указателей.

    Бросок: ничего.


PrevUpHomeNext

Статья Class template weak_ptr раздела The Boost C++ Libraries BoostBook Documentation Subset Indexes and Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Indexes and Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 04:12:35/0.0042350292205811/0