Function overloading and using templates are extremely useful when trying to not write duplicate methods with the same parameters, but only different types.
//main.cpp
#include <iostream>
using namespace std;
void get2Values (int &data1, int &data2);
void get2Values (double &data1, double &data2);
void print2Values (const int &data1,const int &data2);
void print2Values (const double &data1,const double &data2);
template <class dataType>
void swapC (dataType &a, dataType &b);
int main ()
{
int first, second;
double dFirst, dSecond;
get2Values(first, second);
get2Values(dFirst, dSecond);
print2Values(first, second);
print2Values(dFirst, dSecond);
cout << endl << "--Swap--" ;
swapC<int>(first, second);
swapC<double>(dFirst, dSecond);
print2Values(first, second);
print2Values(dFirst, dSecond);
cout << endl;
cin.get();
return 0;
}
void get2Values (double &data1, double &data2)
{
cout << "Enter Double 1 ---> ";
cin >> data1;
cout << "Enter Double 2 ---> ";
cin >> data2;
}
void get2Values (int &data1, int &data2)
{
cout << "Enter int 1 ---> ";
cin >> data1;
cout << "Enter int 2 ---> ";
cin >> data2;
}
void print2Values (const double &data1,const double &data2)
{
cout << endl << "Double 1 ---> " << data1;
cout << endl << "Double 2 ---> " << data2;
}
void print2Values (const int &data1,const int &data2)
{
cout << endl << "Int 1 ---> " << data1;
cout << endl << "Int 2 ---> " << data2;
}
template <class dataType>
void swapC (dataType &a, dataType &b)
{
dataType temp = a; a = b; b = temp;
}
The output should be:
Enter int 1 ---> 1 Enter int 2 ---> 2 Enter Double 1 ---> 3.21 Enter Double 2 ---> 8.125647 Int 1 ---> 1 Int 2 ---> 2 Double 1 ---> 3.21 Double 2 ---> 8.12565 --Swap-- Int 1 ---> 2 Int 2 ---> 1 Double 1 ---> 8.12565 Double 2 ---> 3.21
The template function allows you to pass in any value, saving you from creating the two methods above unique to double and int.
