CComPolyObject 類別
這個類別會實作彙總或 nonaggregated 物件的 IUnknown 。
template<
class contained
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS >
參數
- contained
您的類別,衍生自 CComObjectRoot 或 CComObjectRootEx,以及從任何其他介面在物件要支援。
Members
公用建構函式
名稱 |
描述 |
---|---|
建構函式。 |
|
解構函式。 |
公用方法
名稱 |
描述 |
---|---|
將物件的參考計數。 |
|
(靜態) 可讓您建立新的 CComPolyObject< contained> 物件,而不需額外負荷 CoCreateInstance()。 |
|
執行 m_contained的最後的初始化。 |
|
執行 m_contained的最終解構。 |
|
擷取指標所要求的介面。 |
|
將物件的參考計數遞減。 |
公用資料成員
名稱 |
描述 |
---|---|
委派 IUnknown 呼叫外部 UNKNOWN,如果物件彙總或物件的 IUnknown 物件是否不可彙總。 |
備註
彙總的 nonaggregated 或物件的CComPolyObject 實作 IUnknown 。
當 CComPolyObject 建立的執行個體時,這個外部未知的值進行檢查。 如果是 NULL, IUnknown 為 nonaggregated 物件上實作。 如果這個外部未知的參數不是 NULL, IUnknown 為彙總的物件上實作。
使用 CComPolyObject 的優點是您不會處理 CComAggObject 和的 CComObject 於模組彙總和 nonaggregated 情況。 單一 CComPolyObject 物件控制代碼兩種情況。 這表示只有一個複本的 vtable 和函式的一個複本存在於模組。 如果您 vtable 非常大,所以可以大幅降低模組大小。 不過,因此,如果您 vtable 很小,使用 CComPolyObject 可能造成更大的模組大小,因為它沒有為彙總或 nonaggregated 最佳化物件,就像 CComAggObject 和 CComObject。
如果 DECLARE_POLY_AGGREGATABLE 巨集會在您的物件類別定義中指定, CComPolyObject 將用來建立您自己的物件。 如果您使用 ATL 專案精靈建立完整的控制項或 Internet Explorer 控制項,DECLARE_POLY_AGGREGATABLE 會自動宣告。
如果彙總, CComPolyObject 物件都有自己的 IUnknown,不同於外部物件的 IUnknown,並保留它的參考計數。 CComPolyObject 使用 CComContainedObject 委派至外部未知。
如需集合的詳細資訊,請參閱本文 ATL COM 物件的基本概念。
繼承階層架構
CComObjectRootBase
IUnknown
CComPolyObject
需求
Header: atlcom.h