CComPolyObject

templatelt; класякі містяться >
клас CComPolyObject: IUnknown державних, громадських CComObjectRootEx <які містяться:: _ThreadModel::ThreadModelNoCS >

Параметри

які містяться

Ваш клас, отриманих з CComObjectRoot або CComObjectRootEx, а також будь-які інші інтерфейсів, які ви хочете підтримати об'єкт.

CComPolyObject впроваджує IUnknown для об'єкта агрегованих або незгруповані.

Під час створення екземпляра CComPolyObject , перевірив значення зовнішні невідомі. Якщо це значення NULL, IUnknown здійснюється незгруповані об'єкта. Якщо зовнішні невідомі не NULL, IUnknown здійснюється для складеного об'єкта.

Перевага використання CComPolyObject полягає в тому, що вам уникнути CComAggObject і CComObject у ваш модуль для обробки агрегованих і незгруповані випадках. Один CComPolyObject об'єкт ручками обох випадках. Це означає, що лише одну копію Віртуальна таблиця і однієї копії функцій, що існують у ваш модуль. Якщо ваш таблиці великий, це може суттєво знизити ваш розмір модуля. Однак, якщо ваш таблиці невеликих, використовуючи CComPolyObject може призвести до дещо більший розмір модуля тому, що він не оптимізований для об'єкта агрегованих або незгруповані, як CComAggObject і CComObject.

Якщо ваш об'єкт класу визначення, визначається DECLARE_POLY_AGGREGATABLE макрос, CComPolyObject буде використовуватися для створення об'єкта. DECLARE_POLY_AGGREGATABLE буде автоматично заявив, якщо використовується майстер об'єкт ATL створити повний контроль або Internet Explorer керування.

Якщо воєдино, CComPolyObject об'єкт має свою власну IUnknown, окремо від зовнішнього об'єкта IUnknownі зберігає свою власну кількість посилань. CComPolyObject використовує CComContainedObject делегувати зовнішні невідомі.

Щоб отримати додаткові відомості про об'єднання перегляньте статтю Основи ATL COM об'єктів.

# включити lt;atlcom.h>

Члени класу

Дивіться також CComObjectRootEx, DECLARE_POLY_AGGREGATABLE

Index