IUnknown Implementation
The following classes implement IUnknown and related methods:
- 
CComObjectRootEx   Manages reference counting for both aggregated and nonaggregated objects. Allows you to specify a threading model.
 
 
- 
CComObjectRoot   Manages reference counting for both aggregated and nonaggregated objects. Uses the default threading model of the server.
 
 
- 
CComAggObject   Implements IUnknown for an aggregated object.
 
 
- 
CComObject   Implements IUnknown for a nonaggregated object.
 
 
- 
CComPolyObject   Implements IUnknown for aggregated and nonaggregated objects. Using CComPolyObject avoids having both CComAggObject and CComObject in your module. A single CComPolyObject object handles both aggregated and nonaggregated cases.
 
 
- 
CComObjectNoLock   Implements IUnknown for a nonaggregated object, without modifying the module lock count.
 
 
- 
CComTearOffObject   Implements IUnknown for a tear-off interface.
 
 
- 
CComCachedTearOffObject   Implements IUnknown for a “cached” tear-off interface.
 
 
- 
CComContainedObject   Implements IUnknown for the inner object of an aggregation or a tear-off interface.
 
 
- 
CComObjectGlobal   Manages a reference count on the module to ensure your object won’t be deleted.
 
 
- 
CComObjectStack   Creates a temporary COM object, using a skeletal implementation of IUnknown.
ATL Class Overview
Related Articles   Fundamentals of ATL COM Objects
See Also   Aggregation and Class Factory Macros, COM Map Macros and Global Functions