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

Class Templates

Home Topics C++ Details Class Templates

Class Templates

Like Function Templates, Class Templates are very useful. But how to create them, and use them is not as simple as you might think.

What’s The Problem?

Template Class Method Definitions

friend Declarations in Class Templates

operator<< for Class Templates

Member Templates

Summary of Class Templates

Copyright © 2026, Dr. Bryan Higgs