CS 112 - Week 7 Lecture 1 - 2022-10-04

TODAY WE WILL:
*   announcements
*   aside: (static) arrays of objects
    aside: pointers to objects (and more syntactic sugar)
    aside: C++ fun fact: keyword this

*   STOP 6: dynamic memory and arrays\

*   STOP 6.5: dynamic arrays of objects!
              arrays of pointers to objects!
	      dynamic arrays of pointers to objects!

*   prep for next class

=====
*   Current Reading:
    Savitch, Chapter 9, pointers and dynamic memory

=====
*   I posted a little handout with Homework 5:
    "FUN FACTS about USING a user-defined class"

=====
*   see notes in 112lect07-1.cpp!

=====
*   C++ keyword this
    *   in C++, within a method of a class,
        this is a special pointer that contains
	the *address* of the CALLING object

        SO, within a method,
	this->name would be grabbing a name datafield
	    that is pointed to by this (and this is
	    pointing to the calling object)

=====
STOP 6 - dynamic memory and arrays!
=====
*   how about dynamically allocating an array?

*   hey, this is fairly straightforward!

    new array_type[array_size]

    ...it dynamically allocates a chunk of memory
       able to hold array_size instances of array_type,
       and returns the address of the beginning of that
       chunk

    There IS special syntax for freeing a dynamically-
    allocated array:

    delete [] my_array_ptr;

           ^^ THIS tells the compiler to free ALL of the
	      array elements' memory, not just the first
	      array element's memory!!

    *   in between? treat that array ptr like an array name...!

-----
NOTE:
-----
*   for both dynamic and static arrays,
    it is considered POOR FORM to just change the address
    they point to

    (although for dynamic arrays it is considered FINE
    to:
    (1) deallocate the memory it points to
    (2) THEN use new again to point to a newly-allocated
        chunk of memory )