IUnknown и наследование интерфейса

Наследование в COM не означает повторное использование кода. Поскольку реализация не связана с интерфейсами, наследование интерфейса не означает наследование кода. Это означает, что контракт, связанный с интерфейсом, наследуется в моде чисто виртуального базового класса C++ и изменяется либо путем добавления новых методов, либо путем дальнейшего определения допустимого использования методов. Выборочное наследование в COM отсутствует. Если один интерфейс наследует от другого, он включает все методы, которые определяет другой интерфейс.

Наследование используется в предварительно определенных COM-интерфейсах. Все предопределенные интерфейсы (и все пользовательские интерфейсы, которые вы определяете) наследуют их определения от важного интерфейса IUnknown, который содержит три важных метода: QueryInterface, AddRef и Release. Все COM-объекты должны реализовать интерфейс IUnknown , так как он предоставляет средства с помощью QueryInterface, чтобы свободно перемещаться между различными интерфейсами, поддерживаемыми объектом, а также средствами управления временем существования с помощью AddRef и Release.

При создании объекта, поддерживающего агрегирование, необходимо реализовать один набор функций IUnknown для всех интерфейсов, а также автономный интерфейс IUnknown. В любом случае любой объект-реализутель реализует методы IUnknown . Дополнительные сведения см. в разделе "Использование и реализация IUnknown ".

Хотя существует несколько интерфейсов, которые наследуют их определения от второго интерфейса в дополнение к IUnknown, большинство просто наследует методы интерфейса IUnknown. Это делает большинство интерфейсов относительно компактными и простыми для инкапсулировать.

COM-объекты и интерфейсы