類模板與運算符重載(一個簡單的例子)
標簽(空格分隔): C++ 算法競賽
下面是一段簡單的代碼,表示我們建立了一個類模板Vector,可以看做是對STL中vector的簡單實現。
為了讓這個Vector支持通過下標訪問,所以我們需要對[]這個運算符進行重載。
由于是類模板,所以在類模板內部,遵循這樣的格式:
T& operator ** (int i);
在函數體部分,遵循這樣的格式:
template <typename T>T& classname<T>::operator ** (paraments) {...}
其中的classname是我們定義的類模板的名稱,paraments是這個運算符需要的參數定義。
下面一段程序就是實例。
#include <iostream>
#include <algorithm>
using namespace std;
template <typename T> class Vector {protected:int _size,_capacity;int* _elem;public:T& operator[](int i);
};
template <typename T> T& Vector<T>::operator[](int i) {return _elem[i];}
int main() {int a=1,b=2;const int *p1=&a;int *p2=&b;p1=p2;return 0;
}