Адаптер программного интерфейса
Версия от 12:03, 18 апреля 2017; Ninok2801 (обсуждение | вклад) (Новая страница: «=Адаптер над указателем на абстрактный интерфейс= ==Адаптер без владения AdapterRef== ;<math>\bullet<…»)
Адаптер над указателем на абстрактный интерфейс
Адаптер без владения AdapterRef
- Конструктор по умолчанию
- определен, но доступен только классу AdapterOwn и порожденным классам, только если реализация интерфейсного указателя DefaultConstuctible (напр. nullptr). Интерфейсный указатель default-initialized.
- Неявно преобразуем конструированием
- из интерфейсного указателя.
запрещен.
Конструктор копирования - Копирует интерфейсный указатель.
запрещен.
Конструктор перемещения - Копирует интерфейсный указатель.
- Оператор присваивания с копированием.
- Если через accessor'ы интерфейса определено глубокое копирование, выполнить глубокое копирование. Иначе оператор запрещен.
- Оператор присваивания с перемещением.
- Если через accessor'ы интерфейса определено глубокое перемещение, выполнить глубокое перемещение. Иначе оператор запрещен.
- Ссылка на экземпляр AdapterRef может быть получена неявно из ссылки на AdapterOwn, если есть.
- Определен, но доступен только классу AdapterOwn и порожденным классам, метод reset_interface, устанавливающий новый интерфейсный указатель из указателя на интерфейс, заданного в качестве параметра.
- Определен метод get_interface, возвращающий интерфейсный указатель, ассоциированный с адаптером.
Адаптер с владением AdapterRef
- Конструктор по умолчанию
- определен, если определен метод Clone интерфейса. При этом интерфейсный указатель должен быть default-initialized.
- Конструктор копирования
- определен, если определен метод Clone интерфейса. Конструктор вызывает метод Clone для конструирования нового объекта.
- Конструктор перемещения
- определен. Копирует интерфейсный указатель в конструируемый адаптер и default-initializes интерфейсный указатель перемещаемого адаптера.
- Явный конструктор из AdapterRef
- определен, если определен метод Clone интерфейса. При вызове созданный AdapterOwn завладевает клоном объекта.
- Оператор присваивания с копированием.
- Определен только если определен интерфейсный метод Clone или определено глубокое копирование.
Если оператор определен: Присваивание default-initialized адаптера не default-initialized адаптеру не допускается и генерирует ошибку InvalidParameterException. Присваивание default-initialized адаптера default-initialized адаптеру разрешено и не выполняет никаких действий. Присваивание не default-initialized адаптера default-initialized адаптеру – определено, если определен интерфейсный метод Clone, вызов которого создает копию для нового адаптера. Присваивание не default-initialized адаптера не default-initialized адаптеру определено через глубокое копирование через аксессоры адаптируемого объекта. Если оператор определен, но не определена лишь одна из двух последних ветвей, генерируется ошибка вызова UnsupportedCallException.
- Оператор присваивания из AdapterRef.
- Для default-initialized адаптера – определен, если определен интерфейсный метод Clone, вызов которого создает копию для нового адаптера.