ArrayTP<double, 30> *pt; // 声明一个类指针,但目前还不需要任何对象
pt = new ArrayTP<double, 30>; // 现在,需要一个对象了
template <> class classname<specialized-type-name> { ... };
// 通用模板
template <class T1, class T2> class Pair { ... };
//将 T2 具体化为 int
template <class T1> class Pair<T1, int> { ... };
// 将 T1 和 T2 具体化为 int
template <> class Pair<int, int> { ... };
Pair<double, double> p1; // 使用通用的 Pair 模板
Pair<double, int> p2; // 使用 Pair<T1, int> 部分具体化模板
Pair<int, int> p3; // 使用 Pair<int, int> 显式具体化模板
template<class T> // 通用模板
class Feeb { ... };
template<class T *> // 针对指针的部分具体化
class Feeb { ... }; // 针对通用模板里的代码做相应修改
// 通用模板
template <class T1, class T2, class T3> class Trio{...};
// 将 T3 部分具体化为 T2
template <class T1, class T2> class Trio<T1, T2, T2> {...};
// 将 T2 和 T3 部分具体化为 T
template <class T1> class Trio<T1, T1*, T1*> {...};
Trio<int, short, char *> t1; // 使用通用模板
Trio<int, short> t2; // 使用 Trio<T1, T2, T2>
Trio<char, char *, char *> t3; //使用 Trio<T1, T1*, T1*>
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |