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