One of the biggest advantages of using C++ is templates. Templates were designed from the ground up to allow developers to write one function to handle many different types of parameters. In this article, Mitchell will explain what both function and class templates are, and give examples of each.
The Mighty C++ Template - Behind the scenes (Page 8 of 9 )
You might be wondering just exactly what goes on under the hood when a C++ class template is instantiated.
Firstly, the C++ compiler creates an instance of the template and stores it on the stack. Because our class template passes integer values to its constructor, the compiler creates an instance of our class (on the stack) that can work with variables of type int. This leads us to an important point: The class template itself doesn’t actually do any of the code processing. It simply creates a new instance of the class and its encapsulated functions for the type of variable that it is dealing with, such as int, float, char, string, etc. If an instance of a class for a specific variable type has already been created, the compiler will use that class to create the new instance. When the program ends, the class template and all of its copies are popped off the stack. Just remember that the template is only responsible for creating an instantiation of the class for the type of variable that is required by the program code and doesn’t actually get executed.