模板类中问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 21:21:43
每个类中的成员函数在类外定义时,都要在前面加template<typename T。。。>这些吗?

是的,给你摘抄一段c++ primer上的说明

与非模板类一样类模板的成员函数也可以在类模板的定义中定义在这种情况下该
成员函数是inline 成员函数或者成员函数也可以被定义在类模板定义之外在介绍类模
板Queue 时我们已经看到了inline 成员函数的例子例如在类模板定义中的Queue 构造
函数被定义为inline
template <class Type>
class Queue {
// ...
public:
// inline 构造成员函数
Queue() : front( 0 ), back ( 0 ) { }
// ...
};
被定义在类模板定义之外的成员函数必须使用特殊的语法来指明它是一个类模板的成
员成员函数定义的前面必须加上关键字template 以及模板参数例如在类模板定义之外
可定义Queue 构造函数如下
template <class Type>
class Queue {
public:
Queue( );
private:
// ...
};
template <class Type>
inline Queue<Type>::
Queue( ) { front = back = 0; }
Queue 的第一次出现在域操作符::之前后面紧跟着模板参数表这表示成员函数所属
的类模板Queue 的第二次出现紧跟在域操作符之后表示构造函数的名字它的名字可
以但是不必紧跟在模板参数表后面在成员函数名字之后是函数定义它看起来与非模
680 第十六章 类模板
板函数定义十分相像但是凡是在普通函数定义中可以使用类型名的地方类模板的成员
函数定义也可以引用模板参数Type

貌似是要的
template<typename T>
class_name<T>::function(...)
{
....