A reference counting object, a CObject type, may be owned by another. This, in turn, may be owned by yet another.
Ownership simply reflects a natural relationship. For example, a timer is owned by a thread and a thread is owned by a process. These objects are all instances of classes derived from CObject.
A reference counting object assigns ownership of itself to another reference counting object using CObject::SetOwner(). For example:
... class CMyobject : public CObject { ... }; class CTheOwner : public CObject { ... } ... CMyobject* owned; CTheOwner* owner; ... owned->SetOwner(owner);