Richard's C++ Ch 15

================
C++ is case sensitive
================


Ch 15. Inheritance, Polymorphism, and Virtual Functions

Inheritance (project eg131_GradeActivity) - create object from (using) other objects
Step 1: public
eg131_GradedActivity.h - eg131_GradedActivity class specification, base class
eg131_GradedActivity.cpp - eg131_GradedActivity class implementation

eg131_FinalExam.h - eg131_FinalExam class specification, it is derived from eg131_GradedActivity class.
eg131_FinalExam.cpp - eg131_FinalExam class implementation
eg131_GradedActivity_Demo.cpp - to demonstrate eg131_GradedActivity class and eg131_FinalExam class, main() is here


Protected
Members and Class Access
Step 2: protected
eg131_GradedActivity.h - changed to protected
eg131_GradedActivity.cpp - class implementation

eg131_FinalExam.h - class specification
eg131_FinalExam.cpp - class specification implementation
eg131_GradedActivity_Demo.cpp - main() is here


Contructors and Destructors in Base and Derived Classes (project eg132_BaseClass) - one .cpp file, all classes
constructor is called in sequence => base (parent) => derived (child)
destructior is called in sequence => derived (child) => base (parent)
eg132_BaseClass.cpp - all classes and main

Passing Arguments to Base Class Constructors (project eg133_Cube)
eg133_Rectangle.h - update eg121_Rectangle.h, add constructor implementation - base class
eg133_Cube.h - class decleration and implementation - derived class
eg133_Cube_Demo.cpp - main() is here

Redefining Base Class Functions - (project eg134_Redefine)
eg134_GradedActivity.h - update eg131_GradedActivity.h, with protected, make changes
eg134_GradedActivity.cpp - implementation of some function
eg134_CurvedActivity.h - redefine base class function (not overload)
eg134_CurvedActivity_Demo.cpp - main() is here

Class Hierarchies - Class C inherits Class B inherits Class A (3 classes) (project eg135_Hierarchy)
Step 1: class hierarchies
eg131_GradedActivity.h - Class A, base class
eg131_GradedActivity.cpp - class implementation
eg135_PassFailActivity.h - Class B, inherits from Class A, also redefines a member function
eg135_PassFailActivity.cpp - class implementation
eg135_PassFailExam.h - Class C, inherits from Class B
eg135_PassFailExam.cpp - class implementation
eg135_Demo.cpp - main() is here

Step 2: polymorphism, virtual function
eg131_GradedActivity.h - Class A, base class
eg131_GradedActivity.cpp - class implementation
eg135_PassFailActivity.h - Class B, inherits from Class A, also redefines a member function
eg135_PassFailActivity.cpp - class implementation
eg135_PassFailExam.h - Class C, inherits from Class B
eg135_PassFailExam.cpp - class implementation
eg135_Demo.cpp - main() is here

 

Ch 16. Exceptions, Templates, and the Standard Template Library (STL)

Skipping most of the exceptions
eg139_bad_alloc.cpp exception handling of memory

Function Templates - "generic" function that can work with any datatype (different from overloading)
eg140_fun_template.cpp

Example Programs Using the STL (Standard Template Library)
eg142_vector.cpp

 

Ch 17. Linked Lists

Linked List -
Step 1: without a template
eg141_NumberList.h - class specification
eg141_NumberList.cpp - class implementation
eg141_NumberList_demo.cpp - main is here

Step 2: with a template, use double
- tempalte class must be fully declared in .h file (cannot be seperated into .cpp file).
eg141_NumberList.h - class specification and implementation
eg141_NumberList_demo.cpp - main is here

Step 3: with a template, use another class (object)
eg141_NumberList.h - class specification and implementation
eg141_NumberList_demo.cpp - main is here
eg129_FeetInches.h - use this class, need to define <<
eg129_FeetInches.cpp - use this class, need to define <<