Templates in C++

 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++

  1. Function Templates
  2. 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)

======================================================== 

Post a Comment

0 Comments