Lecture 33

files in ./

ptr_exs2.cpp gives several examples of how pointers can be used
and demonstrates some of the hazards that arise when using them.

files in ./object_default

The following files represent a basic class structure, where a BigClass
contains an object of ThisClass and ThatClass, and ThisClass
contains two objects of SmallClass. The file class_tester.cpp
provides source code that requires calls to C++ destructor, copy constructor and
operator= functions.

files in ./object_impl

The following files implement destructor, copy constructor, and operator= functions
that are identical to the C++ defaults, except that we have added print statements to
help us monitor when each is called.

files in ./ptr_shallow_impl

The following files implement a naive approach to representing the class objects
from above as pointers to objects instead of objects. This code keeps the default
implementations for copy constructor and operator= to demonstrate the problems
that may arise, even if we remember to create new objects in the constructor and
delete them in the destructor.

files in ./ptr_impl

The following files implement the correct approach to representing the class objects
from above as pointers to objects instead of objects. This code modifies the default
implementations for copy constructor to force the call to the member objects copy
contructors and operator= function to force the calls to the member objects operator=
functions.