Log in to Helios and create a new subdirectory for this lab. Copy the following files to your current directory:
g++ -o lab1 lab1main.cpp
and
run the code with the command lab1
.
The genericlist.cpp file contains a template class that allocates a dynamic
array based on the data passed to the constructor. Pay special attention to
the syntax above the template class. This is required whenever you wish to
have a friend function of a template class. In this case, the friend function
is the output operator which prints all of the elements to the given output
stream. The report()
function on the other hand prints the
array pointer address and the size of the array to standard out.
Even when
the array is cloned to a second array, note that their array addresses are
different. This means the clone is a copy of the original; they do not both
use the same chunk of memory. You must define a copy constructor and
assignment operator to see this behavior. If they are not defined, then the
clone's array address would be the same as the original's. This is not
desirable because if the original is destructed before the clone (or vis
versa), the delete
operation in the destructor would free the
memory for use by other programs even though there is still an object using
that memory.
In the lab1main.cpp file, the pretty_print()
function wraps
around the output operator to create a nicer looking output. The double
version sets the precision to two decimal places while the template version
adds a tab before the output.
prett_print()
function to
lab1main.cpp
that adds a string of decorative characters (such
as ***** or +++++) before and after printing the elements. Email the new
version of lab1main.cpp to me by 5pm.