This class implements IUnknown for a nonaggregated object.
class CComObject :
Your class, derived from CComObjectRoot or CComObjectRootEx, as well as from any other interfaces you want to support on the object.
CComObject implements IUnknown for a nonaggregated object. However, calls to QueryInterface, AddRef, and Release are delegated to CComObjectRootEx.
For more information about using CComObject, see the article Fundamentals of ATL COM Objects.