一。非类型模版
#include <iostream> using namespace std; template<int Size> class Index { public: int operator[](char vchar) { return vchar % Size; } }; int main() { Index<26> index; cout << index[‘a‘] << endl; }
二。类模版
类模版——模版形参为基本类型
#include <iostream> using namespace std; template<class Type> class trie { public: trie(Type val_1, Type val_2) : num_1(val_1), num_2(val_2) {} void print_sum() { cout << num_1 + num_2 << endl; } private: Type num_1, num_2; }; int main() { trie<int> tt(2, 5); tt.print_sum(); }
类模版——模版形参为自定义非模版类
#include <iostream> using namespace std; template<class Type> class trie { public: Type num; }; class Index { public: int operator[](char vchar) { return vchar % 26; } }; int main() { trie<Index> tt; cout << tt.num[‘a‘] << endl; cout << tt.num[‘z‘] << endl; }
类模版——模版形参为自定义模版类
#include <iostream> using namespace std; template<class Type, int Size> class trie { public: Type num; }; template<int Size> class Index { public: int operator[](char vchar) { return vchar % Size; } }; int main() { trie<Index<26>, 26> t; }
三。函数模版
#include <iostream> using namespace std; template<class Type> Type sum(Type num_1, Type num_2) { return num_1 + num_2; } int main() { cout << sum(2, 3) << endl; cout << sum(2.2, 3.0) << endl; }
结果
5
5.2
原文:http://www.cnblogs.com/kaituorensheng/p/3601495.html