--- description: "Learn more about: IUnknown Implementation Classes" title: "IUnknown Implementation Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["IUnknown implementation classes"] ms.assetid: 47b69bb5-69d8-4a9c-84a8-329bdde2bb3f --- # IUnknown Implementation Classes The following classes implement `IUnknown` and related methods: - [CComObjectRootEx](../atl/reference/ccomobjectrootex-class.md) Manages reference counting for both aggregated and nonaggregated objects. Allows you to specify a threading model. - [CComObjectRoot](../atl/reference/ccomobjectroot-class.md) Manages reference counting for both aggregated and nonaggregated objects. Uses the default threading model of the server. - [CComAggObject](../atl/reference/ccomaggobject-class.md) Implements `IUnknown` for an aggregated object. - [CComObject](../atl/reference/ccomobject-class.md) Implements `IUnknown` for a nonaggregated object. - [CComPolyObject](../atl/reference/ccompolyobject-class.md) 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](../atl/reference/ccomobjectnolock-class.md) Implements `IUnknown` for a nonaggregated object, without modifying the module lock count. - [CComTearOffObject](../atl/reference/ccomtearoffobject-class.md) Implements `IUnknown` for a tear-off interface. - [CComCachedTearOffObject](../atl/reference/ccomcachedtearoffobject-class.md) Implements `IUnknown` for a "cached" tear-off interface. - [CComContainedObject](../atl/reference/ccomcontainedobject-class.md) Implements `IUnknown` for the inner object of an aggregation or a tear-off interface. - [CComObjectGlobal](../atl/reference/ccomobjectglobal-class.md) Manages a reference count on the module to ensure your object won't be deleted. - [CComObjectStack](../atl/reference/ccomobjectstack-class.md) Creates a temporary COM object, using a skeletal implementation of `IUnknown`. ## Related Articles [Fundamentals of ATL COM Objects](../atl/fundamentals-of-atl-com-objects.md) ## See also [Class Overview](../atl/atl-class-overview.md)
[Aggregation and Class Factory Macros](../atl/reference/aggregation-and-class-factory-macros.md)
[COM Map Macros](../atl/reference/com-map-macros.md)
[COM Map Global Functions](../atl/reference/com-map-global-functions.md)