Skip to content
No results
  • Topics
    • Background
      • What Problems are we Trying to Solve?
      • History of O-O Programming Languages
      • Software Engineering Principles
      • Object-Oriented Concepts
    • C++ Details
      • Beginnings
        • The Basics of C & C++
        • An Overview of C++
        • Small Enhancements over C
      • Variables, lvalues, and rvalues
      • Namespaces
      • Classes
        • What Are Classes?
        • Conversions
        • this & Temporary Objects
        • Operator Overloading & friends
        • Member Class Objects & Initializer Lists
        • const, Reference, and static Members
      • const, volatile, mutable, and More
      • Inheritance
      • Constructing Class Hierarchies
      • Polymorphism
      • Multiple Inheritance
      • I/O Streams
        • What are Streams?
        • Stream Output
        • Stream Input
        • Unformatted I/O
        • Stream Manipulators
        • Tying Streams
        • Output of User-Defined Types
        • Input of User-Defined Types
        • Writing Your Own Stream Manipulators
        • Summary of I/O Streams
      • Exceptions
        • What’s The Problem?
        • A C (not C++) Exception Mechanism
        • C++ Exceptions
        • Grouping of Exceptions
        • Resource Acquisition
        • Exception Specifications
        • Unexpected Exceptions
        • Standard Exceptions
        • Summary of Exceptions
      • Function Templates
        • What’s The Problem?
        • Template Explicit Specialization
        • Function Template Overloading
        • Using Arguments to Specify Policy
        • Default Template Parameters
        • Template Value Parameter Usage
        • Summary of Function Templates
      • Class Templates
        • What’s The Problem?
        • Template Class Method Definitions
        • friend Declarations in Class Templates
        • operator<< for Class Templates
        • Member Templates
        • Summary of Class Templates
      • The Standard Template Library
        • What’s The Problem?
        • Containers
        • Generic Algorithms
        • Iterators
        • Function Objects
        • Adapters
        • Sorted Associative Containers
        • Function Adapters
        • Summary of The Standard Template Library
      • Lambdas & Closures
      • Smart Pointers and Move Semantics
  • Assignments
    • Assignment 1
      • Assignment 1a: Pointers & Arrays
      • Assignment 1b: Simple C++ Features
    • Assignment 2
    • Assignment 3
    • Assignment 4
    • Assignment 5
    • Assignment 6
    • Assignment 7
  • About this Course
  • Resources
    • Books
    • Websites
    • References
    • IDEs
  • Contact
C++ Logo (SVG)
Practical C++ Programming

A C++ Tutorial

  • Topics
    • Background
      • What Problems are we Trying to Solve?
      • History of O-O Programming Languages
      • Software Engineering Principles
      • Object-Oriented Concepts
    • C++ Details
      • Beginnings
        • The Basics of C & C++
        • An Overview of C++
        • Small Enhancements over C
      • Variables, lvalues, and rvalues
      • Namespaces
      • Classes
        • What Are Classes?
        • Conversions
        • this & Temporary Objects
        • Operator Overloading & friends
        • Member Class Objects & Initializer Lists
        • const, Reference, and static Members
      • const, volatile, mutable, and More
      • Inheritance
      • Constructing Class Hierarchies
      • Polymorphism
      • Multiple Inheritance
      • I/O Streams
        • What are Streams?
        • Stream Output
        • Stream Input
        • Unformatted I/O
        • Stream Manipulators
        • Tying Streams
        • Output of User-Defined Types
        • Input of User-Defined Types
        • Writing Your Own Stream Manipulators
        • Summary of I/O Streams
      • Exceptions
        • What’s The Problem?
        • A C (not C++) Exception Mechanism
        • C++ Exceptions
        • Grouping of Exceptions
        • Resource Acquisition
        • Exception Specifications
        • Unexpected Exceptions
        • Standard Exceptions
        • Summary of Exceptions
      • Function Templates
        • What’s The Problem?
        • Template Explicit Specialization
        • Function Template Overloading
        • Using Arguments to Specify Policy
        • Default Template Parameters
        • Template Value Parameter Usage
        • Summary of Function Templates
      • Class Templates
        • What’s The Problem?
        • Template Class Method Definitions
        • friend Declarations in Class Templates
        • operator<< for Class Templates
        • Member Templates
        • Summary of Class Templates
      • The Standard Template Library
        • What’s The Problem?
        • Containers
        • Generic Algorithms
        • Iterators
        • Function Objects
        • Adapters
        • Sorted Associative Containers
        • Function Adapters
        • Summary of The Standard Template Library
      • Lambdas & Closures
      • Smart Pointers and Move Semantics
  • Assignments
    • Assignment 1
      • Assignment 1a: Pointers & Arrays
      • Assignment 1b: Simple C++ Features
    • Assignment 2
    • Assignment 3
    • Assignment 4
    • Assignment 5
    • Assignment 6
    • Assignment 7
  • About this Course
  • Resources
    • Books
    • Websites
    • References
    • IDEs
  • Contact
C++ Logo (SVG)
Practical C++ Programming

A C++ Tutorial

Constructing Class Hierarchies

Home Topics C++ Details Constructing Class Hierarchies

Copyright © 2026, Dr. Bryan Higgs