CPP Tutorial

CPP examples programs

CPP Templates

CPP templates acts as a support for generic programming technique, where parameters in algorithms are of generic types and thus can work for a variety of data types. This feature in CPP is used to define the generic classes and generic functions.

 

Types of CPP Templates:

  1. Function Templates:

In function templates, templates for a function is defined.

Syntax:

template < class Ttype> ret_type func_name(parameter_list) 

{

  // code to be executed 

}

  • Ttype:

This parameter is used to represent a placeholder name, to be replaced by the compiler, for a data type, within the function definition.

  • class:

This keyword is used before Ttype to specify a generic type in a template declaration.

Syntax: Function Templates with Multiple Parameters:

template <class T1, class T2,…..>

return_type function_name (arguments of type T1, T2….)

{

  // code to be executed 

}

Important points:

  • Function template is used by generic functions to define a set of operations that can be applied to the various types of data.
  • The generic functions can be overloaded by overloading the template functions (can differ in the parameter list).
  • For all the versions of a function, a generic function executes the same operation for the same data type.

Example:

#include <iostream.h>  
using namespace std;  
template<class A> A mul(A &x,A &y,A &z)  
{  
A product = x*y*z;  
return product;  
}  
int main()  
{  
float n1 = 50;  
float n2 = 40;  
float n3 = 30;
cout<<"Product of " << n1 << ", " << n2 << " and " << n3 <<" is : "<< mul(n1,n2,n3);  
return 0;  
}

Output

Product of 50, 40 and 30 is : 60000
  1. Class Template:

In class templates, templates for a class is defined.

Syntax:

template <class Ttype>

class class_name 

{

  // code to be executed 

}

  • Ttype:

This parameter is used to represent a placeholder name, to be replaced by the compiler, for a data type, within the class definition.

Syntax: Creating an instance of a class

class_name <type> ob;

  • type:

This parameter is used to specify the type of the data that the class is operating on.

  • ob:

This parameter is used to specify the name of the object.

Syntax: Class Templates with Multiple Parameters:

template<class T1, class T2, ……>

class class_name

{

  // code to be executed 

}

Non Type Template Arguments

The non-type arguments such as strings, function names, constant expression and built-in types can also be used in addition to the type T argument.

Example:

#include <iostream.h>  
using namespace std;  
template<class X>  
class A   
{  
public:  
X n1 = 50;  
X n2 = 20;  
X n3 = 30;
void mul()  
{  
std::cout<<"Product of " << n1 << ", " << n2 << " and " << n3 <<" is : "<< n1*n2*n3<<std::endl;  
}  
};  
 
int main()  
{  
A<int> m;  
m.mul();  
return 0;  
}

Output

Product of 50, 20 and 30 is : 30000