WA1080 Advanced C++ Programming
Course Outline
1. What You Should Already Know - A Review
  • Rationale for a new programming paradigm
  • The language of Object Orientation
  • A typical C++ class - a string class
  • Issues regarding member functions
    • member vs non member function
    • friend vs non friend
    • functions - returning references
    • Why does operator= return a reference?
  • Relationships
  • Simple C++ I/O
  • The uses of const
2. Parameterized Types - Templates
  • Templates
  • Overloading functions
  • Template functions
  • Specializing a template function
  • Disambiguation under specialization
  • Template classes
  • An array template class
  • Instantiating a template class object
  • Rules for templates
  • Non member function w/ a template argument
  • Friends of template classes
  • Templates with multiple type parameters
  • Comments regarding templates
3. Relations of All Kinds
  • Uses of Member Initialization Lists
  • Initialization lists under composition
  • Initialization lists under inheritance
  • Initialization lists w/ Multiple Inheritance (MI)
  • Initialization with MI and composition
  • Efficiency
  • operator= and composition
  • Constructors and composition
  • What is not inherited?
  • operator=, construction, and inheritance
  • Designing for inheritance
  • Public inheritance
    • Simple inheritance
    • Virtual functions
    • A shape class hierarchy
    • Polymorphism
    • Pure virtual functions
    • Virtual destructors
    • Abstract base classes
  • Private inheritance
  • Private inheritance vs composition
  • Using relationships
  • Associations
4. Multiple Inheritance
  • Multiple inheritance
  • Ambiguities
  • Removing ambiguities
  • virtual base classes
  • virtual base classes and the dominance rule
  • Member initialization lists with MI
  • operator= and MI
  • Designing for inheritance
5. Data Structures
  • Introduction
  • A simple List
  • Implementation of the list functions
  • Layering type safe classes upon List
  • A template List class
  • Iterators
  • A template iterator
  • Stack and Queue classes
  • A derived template array class
6. Function Pointers
  • Why have function pointers?
  • Passing functions as arguments
  • Registering functions
  • Callback functions
  • A class with a callback object
  • Registration of exceptions handlers
7. Exceptions
  • What are exceptions?
  • Traditional approaches to error handling
  • try, catch, and throw
  • A simple exception handler
  • Multiple catch blocks
  • The exception specification list
  • Rethrowing an exception
  • Cleanup
  • Exception matching
  • Inheritance and exceptions
  • Resource allocation
  • Constructors and exceptions
  • Destructors and exceptions
  • Catch by reference
  • Standard exceptions
8. The C++ Standard Template Library
  • History and evolution
  • New features
  • The Standard Template Library
  • STL Components
  • Iterators
  • Example: vector
  • Example: list
  • Example: set
  • Example: map
  • Example: find
  • Example: merge
  • Example: accumulate
  • Function objects
  • Adaptors
9. Disambiguation
  • Conversion
  • int Conversions
  • float
  • Arithmetic and pointer conversions
  • Inheritance based conversion
  • Overloaded functions
  • Exact match
  • Match with promotion
  • Match with standard conversion
  • User defined conversion
  • Constructors as conversion operators
  • Ambiguities
10. File I/O
  • Introduction
  • Error checking
  • Overloading << and >>
  • Formatted I/O
  • Disk files
  • Examples of seekg, tellg, and close
  • Reading and writing objects to the disk
  • Internal transmission of data
  • A larger I/O example: Spell checker
  • Treating a file as an array
11. Miscellaneous Topics
  • New features in the standard C++ language
  • Namespaces
  • Use counts
  • Run Time Type Identification
  • New casts
  • Overloading operator new and delete
  • How virtual functions are implemented
  • Having a limited number of objects
  • Smart pointers