Templates

Behaviour with predefined types:
int ia = 1;
int ib = 2;
varSwap(ia, ib);
cout « ia « ", " « ib « endl; // output: 2, 1

double da = 1.1;
double db = 2.2;
varSwap(da, db);
cout « da « ", " « db « endl; // output: 2.2, 1.1

Behaviour with user-defined types:
class MyClass {
public:
MyClass(std::string t) : myString(t) { }
$ \tilde{\;}$ MyClass() { }
std::string getString(void) { return myString; }
void setString(std::string& t) { myString = t; }
private:
std::string myString;
};

MyClass ma("A");
MyClass mb("B");
varSwap(ma, mb);
cout « ma « ", " « mb « endl; // output: B, A

Leo Liberti 2008-01-12