Generic Programming


Templates in C++ help implement generic programming in C++. The Swap function from the previous tutorial is powerful enough to support any other data type that needs to be swapped. In the code below, Swap can be used as-is to swap two integers.

#include <iostream>
using namespace std;

template<typename T>
void Swap(T &a, T&b)
{
    T temp = a;
    a = b;
    b = temp; 
}

int main()
{
    string hello = "world!", world = "Hello, ";
    Swap(world, hello);
    cout << hello << world << endl;

    int a = 5, b = 11;
    Swap(a, b);
    cout << "a:" << a << " b:" << b << endl; 
    return 0;
}

Templates, Classes and Operator Overloading

Exercise

The Swap function will also work with user-defined data types. To demonstrate this, implement a C++ class Point which has coordinates x and y. Create two objects of the type Point and swap them. Operator overloading for the operator = also has to be implemented.