Templates
A template in C++ is a
mechanism that allows us to write generic programs, meaning the same
code works for different data types.
Needs of Templates
Without templates:
- We
must write separate functions/classes for int, float, double, etc.
- Code
duplication increases
- Maintenance
becomes difficult
With Templates
- One
code → works for all data types
- Increases
reusability
- Improves
type safety
- Reduces
code size
Example
A calculator function for:
- integers
- floating
values
Instead of writing 2 functions → write one template function.
Types of Templates
in C++
- Function
Templates
- Class
Templates
1. Function Templates
A function template allows
creating a single function that can operate on different data types.
Syntax
template <class T>
return_type function_name(T
variable)
{
// code
}
OR
template <typename T>
class and typename are the same in
templates
Example : Function Template for
Addition Program
#include <iostream>
using namespace std;
template <class T>
T add(T a, T b)
{
return a + b;
}
int main()
{
cout << "Integer Addition: " << add(10, 20)
<< endl;
cout << "Float Addition: " << add(10.5, 20.5)
<< endl;
return 0;
}
Output
Integer Addition: 30
Float Addition: 31
Example : Template for Finding
Maximum
#include <iostream>
using namespace std;
template <class T>
T maximum(T x, T y)
{
if (x > y)
return x;
else
return y;
}
int main()
{
cout << maximum(10, 20) << endl;
cout << maximum(12.5, 7.8) << endl;
return 0;
}
----------------------------------------------
2.
Class Templates
A class template allows
creating a class that can work with any data type.
Syntax
template <class T>
class ClassName
{
T data;
public:
void display();
};
Example : Class Template
#include <iostream>
using namespace std;
template <class T>
class Sample
{
T value;
public:
Sample(T v)
{
value = v;
}
void show()
{
cout << "Value: "
<< value << endl;
}
};
int main()
{
Sample<int> obj1(100);
Sample<float> obj2(25.5);
obj1.show();
obj2.show();
return 0;
}
Output
Value: 100
Value: 25.5
Multiple Template
Parameters
Syntax
template <class T1, class T2>
Example : Multiple Data Types
#include <iostream>
using namespace std;
template <class T1, class T2>
class Test
{
T1 a;
T2 b;
public:
Test(T1 x, T2 y)
{
a = x;
b = y;
}
void display()
{
cout << a << " and
" << b << endl;
}
};
int main()
{
Test<int, float> obj(10, 5.5);
obj.display();
return 0;
}
Function Template
vs Class Template
|
Feature |
Function Template |
Class Template |
|
Used for |
Functions |
Classes |
|
Syntax |
template<class T> |
template<class T> |
|
Reusability |
High |
Very High |
|
Example |
add() |
vector<T> |
Advantages of
Templates
Code reusability
Type safety
Reduced code size
Better performance (compile-time binding)
Disadvantages of
Templates
Compilation time increases
Error messages are complex
Code bloat (multiple instantiations)
========================================================
0 Comments