Smart Pointers and other Pointer classes
Because copy has different meaning with different classes, there are several pointer classes here.
File SmartPointers.h defines the following classes:
- CWizSmartPtr - trivial base class for all others;
- CWizSafePtr - smart pointer class which basic garbage collections (i.e. knows to
delete the pointer in destructor). From here and later every pointer class must hold a pointer allocated from heap only! Copy operator attaches the object to the pointer and then detaches it from previous pointer - "pessimistic shadow copy". - CWizSafeArray - simple array of objects.
- CWizDuplPtr - implements deep copy semantics for copy constructor/operator.
Requires from an object to have a copy constructor. No polymorphism. - CWizClonePtr - implements deep copy semantics for copy constructor/operator, with
support for polymorphism in pointed object. Requires from an object to have a Clone()
function. In the case of polymorphism a Clone() function must be virtual function
returning pointer to the root of hierarchy.
An example:class A
{
A(const A& a);
virtual A* Clone() const { return new A(*this); }
};class B
{
B(const B& a);
virtual A* Clone() const { return new B(*this); }
}; - CWizBaseMultiRefPtr - Multiply pointer classes with reference counting and
polymorphism.
Class implements basic machinery of reference counting, but doesn't implement a counter.
Class CWizMultiRefPtr uses int as counter (the simplest solution).
Implement garbage collection with reference counting, shadow copy, polymorphism. - CWizCounterMultiRefPtr - optimized Multiply pointer classes with reference
counting and polymorphism. Differs from CWizBaseMultiRefPtr in implementing reference
counting,
which shifted to the managed class itself. It minimizes memory fragmentation, but requires access to the managed classes, which is not always possible.
File SmartPointersSerialize.h defines StoreSmartPtr()
and LoadSmartPtr() functions for serializing to/from MFC CArchive.
File SmartPointerArrays.h defines arrays of smart
pointers. All arrays are derived from CArray of MFC.
File SmartPointerArraysSerialize.h defines
template function SerializeArray() for serializing to/from MFC CArchive.
File SmartPointerArraysSort.h defines template
function SerializeArray() for serializing to/from MFC CArchive.
File SerializeVersion.h defines function
SortSmartPrtArray().
Designed to hold objects of one class (no polymorphism). Several pointers can point to the same object; the object deleted when destroying the last pointer to it. By the nature uses shallow copy.
File MULTIPTR.H .

Comments
It's all MFC
Posted by Legacy on 12/18/2001 12:00amOriginally posted by: NMTop40
And it doesn't work when I look at it in the window here (no new-lines)
Reply
Error in example?
Posted by Legacy on 10/24/2000 12:00amOriginally posted by: Jesper Rug�rd
Shouldn't B be declared:
class B : public A
{...}
(or something like that?)
Reply