Interface implementation base::release

Материал из CAMaaS preliminary wiki
Версия от 18:39, 7 декабря 2017; Андрей Чусов (обсуждение | вклад) (Новая страница: «{{function_begin |std::size_t release() noexcept; |{{interface_implementation_base::release brief}}}} {{function return_value|Результирующее зна…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску
std::size_t release() noexcept;

Метод, реализующий декремент счетчика ссылок на объект interface_implementation_base и, если в результате счетчик становится нулевым, уничтожает объект interface_implementation_base.

Возвращаемое значение:
Результирующее значение счетчика ссылок.

Метод определен независимо от политики interface_ref_ctr_policy, которая специализирует C++ шаблон interface_implementation_base. Если политика не определяет подсчета ссылок, реализация метода interface_implementation_base::release всегда возвращает 0, однако при этом уничтожения объекта не производится - в отличие от случая, когда политикой interface_ref_ctr_policy определяется подсчет ссылок. В последнем случае, вызов делегируется объекту-политике и, если результирующее значение счетчика ссылок оказывается нулевым, производится уничтожение объекта interface_implementation_base путем вызова метода interface_implementation_base::dispose.

Метод определен как noexcept, если политика interface_ref_ctr_policy не определяет подсчета ссылок, или если определенный политикой метод release сам является noexcept.