设为首页 加入收藏

TOP

3.1.1 类模板的声明
2013-10-07 00:08:07 来源: 作者: 【 】 浏览:63
Tags:3.1.1 模板 声明

3.1.1  类模板的声明

类模板的声明和函数模板的声明很相似:在声明之前,我们先(用一条语句)声明作为类型参数的标识符;我们继续使用T作为该标识符:

template <typename T>
class Stack {
...
};

在此,我们可以再次使用关键字class来代替typename:

template <class T>
class Stack {
...
};

在类模板的内部,T可以像其他任何类型一样,用于声明成员变量和成员函数。在下面的例子中,T被用于声明vector的元素类型,声明push()是一个接收常量T引用为唯一实参的成员函数,声明top()是返回类型为T的成员函数:

template <typename T>
class Stack {
private:
std::vector<T> elems; //存储元素的容器

public:
Stack();     //构造函数
void push(T const &); //压入元素
void pop();    //弹出元素
T top() const;   //返回栈顶元素
};

这个类的类型是Stack<T>,其中T是模板参数。因此,当在声明中需要使用该类的类型时,你必须使用Stack<T>。例如,如果你要声明自己实现的拷贝构造函数和赋值运算符,那么应该这样编写 :

template <typename T>
class Stack {
...
Stack (Stack<T> const&);     //拷贝构造函数
Stack<T>& operator= (Stack<T> const&); //赋值运算符
...
};

然而,当使用类名而不是类的类型时,就应该只用Stack;譬如,当你指定类的名称、类的构造函数、析构函数时,就应该使用Stack。

【责任编辑:杜书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.8 ANSI C标准的结构 下一篇3.1.2 成员函数的实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: