Skip to content

Latest commit

 

History

History
 
 

README.md

Introduction to C++ & OOP

cppio.cpp

Video (5:57): C++ input & output - cout, cin, & getline

This file has code examples of using stream input & output in C++.

overview.cpp

Video (9:24): Introduction to C++ syntax

This file has examples of variable declarations, initializations, auto, constants, a vector, and pointers in C++.

strings.cpp

Video (11:42): C++ string examples

C++ includes a string type. Several examples of different string functions.

boolean.cpp

Video (10:00) Example of using bool type and ternary operator

references.cpp

Video (11:12) Examples of C++ references

Demonstration of how to work with references, including a function that returns a reference.

defaultargs.cpp

Video (4:32): Default arguments

This file contains an example of using default arguments in C++ functions.

constmethod.cpp

Video (5:28): Example of const member methods

OOP Examples

The next few videos feature examples of inheritance, virtual/non-virtual functions, and polymorphism. The are included in increasing order of complexity, but if you are new to OOP you may find the first animals.cpp to be easier to understand at first.

VIDEO - Overview of Inheritance, Polymorphism, & Virtual Functions in C++ (9:02)

inheritance.cpp

Video (6:18): Overview of deriving a class in C++

virtualfunctions.cpp

Video (9:31): Virtual & pure virtual methods

This file contains a simplified example of how non-virtual, virtual, & pure-virtual methods work. You may want to review the animals.cpp videos first if you want to get a review of inheritance first or a more specific explanation of how each of the types of functions work.

UPDATE: Line 29 has changed from the video. The string was changed to "SUB: nonVirtual2" to reflect that this was part of the derived class.

animals.cpp

Video 1 (7:34): Inheritance with C++, pointers & references

Video 2 (13:07): Polymorphism, virtual, non-virtual, & pure virtual methods

This file includes examples of inheritance, polymorphism, and virtual and pure-virtual methods.

staff

  • Video 1 (8:00) - Creating the abstract classes StaffMember & Employee
  • Video 2 (8:26) - Creating the concrete classes Hourly, Salaried, & Volunteer
  • Video 3 (15:29) - Working with collections of objects and virtual vs. non-virtual methods
  • Video 4 (3:22) - Working with collections of objects and virtual vs. non-virtual methods

Examples of inheritance, polymorphism, virtual vs non-virtual methods, C++ header (.hpp) files, and writing a makefile for a larger multi-file program. We use a vector to store a list of pointers to StaffMembers. We will cover vectors in a later module. I left a lot of the compile errors and some design changes in the video so that you can see the thought process behind it.

This program contains the following class hierarchy:

  • StaffMember (staffmember.cpp / staffmember.hpp)
    • Volunteer (volunteer.hpp - no cpp file needed)
    • Employee (employee.cpp / employee.hpp)
      • Hourly (hourly.cpp / hourly.hpp)
      • Salaried (salaried.cpp / salaried.hpp)

In the loop where the pay stubs are printed in staff.cpp, the StaffMember print method is called since print is not virtual. This is as intended - the only thing that should be printed is the name/address/phone of the employee, not additional things such as SSN. To print that information we would need to use a variable or pointer of the derived class type.

NOTE: Instead of writing the bonus method, I could have overloaded the pay method with a virtual method that took a parameter for the size of the bonus. Also, it probably would have been better to use variables instead of pointers for the 4 StaffMembers to avoid memory allocation.