Open In App
Related Articles

Class template with multiple parameters

Improve Article
Improve
Save Article
Save
Like Article
Like

Prerequisite: Templates in C++

While creating templates, it is possible to specify more than one type. We can use more than one generic data type in a class template. They are declared as a comma-separated list within the template as below:
Syntax:

template<class T1, class T2, ...>
class classname
{
      ...
      ...
};




// CPP program to illustrate
// Class template with multiple parameters
  
#include<iostream>
using namespace std;
  
// Class template with two parameters
template<class T1, class T2>
class Test
{
        T1 a;
        T2 b;
    public:
        Test(T1 x, T2 y)
        {
            a = x;
            b = y;
        }
        void show()
        {
            cout << a << " and " << b << endl;
        }
};
  
// Main Function
int main()
{
    // instantiation with float and int type
    Test <float, int> test1 (1.23, 123);
      
    // instantiation with float and char type
    Test <int, char> test2 (100, 'W');   
      
    test1.show();
    test2.show();
      
    return 0;
}

Output:

1.23 and 123
100 and  W

Explanation of the code:

  • In the above program, the Test constructor has two arguments of generic type.
  • The type of arguments is mentioned inside angle brackets < > while creating objects.
  • When argument is more than one, they are separated by commas.
  • Following statement
    Test  test1 (1.23, 123);

    tells the compiler that the first argument is of type float and another one is int type.

  • During creation of objects, constructor is called and values are received by template arguments.

This article is contributed by Sakshi Tiwari. If you like GeeksforGeeks(We know you do!) and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


Last Updated : 27 Jun, 2017
Like Article
Save Article
Similar Reads