void varSwap(int& a, int& b);
void varSwap(double& a, double& b); ... |
template<class T> void varSwap(T& a, T& b) { T tmp(b); b = a; a = tmp; } |
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) { }
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