bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/C++/C++ Classes
C++•C++ Classes

C++ Templates

Flash cards

Review the key moves

1/4
Core idea

What is the main idea behind C++ Templates?

Lesson checks

Practice each idea before moving on

Short Mimo-style checks built from this lesson's code, terms, and sequence.

1Quick choice

Which statement best captures the main point of this lesson?

2Fill blank

Complete the missing token from the example code.

___ < typename T
3Order

Put the learning moves in the order that makes the concept easiest to apply.

Why Use Templates?
C++ Class Templates
C++ Function Templates

Templates let you write a function or class that works with different data types.

They help avoid repeating code and make programs more flexible.

C++ Function Templates

You can create a function template by using the template keyword:

Syntax

template < typename T
>
return_type
function_name
( T parameter ) {
 // code
}
  • T is a placeholder for a data type (like int , float , etc.).
  • You can use any name instead of T , but T is common.

Example

template <typename T> T add(T a, T b) {
  return a + b;
}
int main() {
  cout << add<int>(5, 3) << "\n";
  cout << add<double>(2.5, 1.5) << "\n";
  return 0;
}

In the example above, add<int>(5, 3) tells the compiler to use int for T , while add<double>(2.5, 1.5) tells it to use double .

C++ Class Templates

You can also use templates to make classes that work with any data type:

Syntax

template < typename T
> class
ClassName {
 // members and methods using T
};

The example below defines a template class Box that can store and display a value of any data type, and then creates one box for an int and one for a string :

Example

template <typename T> class Box {
  public: T value;
  Box(T v) {
    value = v;
  }
void show() {
  cout << "Value: " << value << "\n";
}
};
int main() {
  Box<int> intBox(50);
  Box<string> strBox("Hello");
  intBox.show();
  strBox.show();
  return 0;
}

And this example defines a template class Pair that stores two values of different types and displays them, then creates one pair for a person's name and age, and another for an ID and score:

Example

template <typename T1, typename T2> class Pair {
  public: T1 first;
  T2 second;
  Pair(T1
  a, T2 b) {
    first = a;
    second = b;
  }
void display() {
  cout << "First: " << first << ", Second: " << second << "\n";
}
};
int main() {
  Pair<string, int> person("John", 30);
  Pair<int, double> score(51, 9.5);
  person.display();
  score.display();
  return 0;
}

Why Use Templates?

Templates let you

  • Avoid repeating the same logic for different types
  • Write cleaner, reusable code
  • Support generic programming

Note

Templates must be defined in the same file where they are used (usually in the .h file).

Previous

C++ Virtual Functions

Next

C++ Files