C++模板类
来源:互联网 发布:最好的安卓软件 知乎 编辑:程序博客网 时间:2024/06/16 21:14
原例子:
定义一个Stack类:
typedef unsigned long Item;
class Stack
{
private:
enum{MAX=10};
Item items[MAX]; // holds stack items
int top; //index of top stack item
public:
Stack();
bool isempty() const;
bool isfull() const;
bool push( const Item & item);//add item to stack
bool pop(Item & item);// pop top into item
};
采用模板时,将使用模板定义替换Stack声明,使用模板成员函数替换Stack的成员函数。模板类以下面的代码开头:
template <class Type> 或者template <typename Type>
当模板被调用时,Type将被具体的类型值(如int 、string等)取代。每个成员函数头都将以相同的模板声明开头:
template<class Type>
注意:如果在类声明中定义了方法(内联函数),可以省略模板前缀和类限定符
修改后的模板类定义
template <class Type>
class Stack
{
private:
enum{MAX=10};
Type items[MAX];
int top;
public:
Stack();
bool isempty();
bool isfull();
bool push(const Type& item);
bool pop(Type & item);
};
template <class Type> ------>每个成员函数开头都得有这行代码
Stack<Type>::Stack()
{
top = 0;
}
template <class Type>
bool Stack<Type>::isempty()
{
return top == 0;
}
template <class Type>
bool Stack<Type> ::isfull()
{
return top == MAX;
}
template <class Type>
bool Stack<Type>::push(const Type & item)
{
if( top < MAX )
{
items[top++] = item;
return true;
}
else
return false;
}
template <class Type>
bool Stack<Type>::pop(Type & item)
{
if( top == 0 )
return false;
else
{
item = items[--top];
return true;
}
}
实例化:
Stack <int > kernels; //定义一个int类型的Stack
Stack <string> d;//定义了一个string类型的Stack
<>中可以是内置类型和自己定义的类。//内置类型:编程语言自己定义的一些类,在C++中包括int,char,double,bool,float等
同时,<>中可以是非类型(non-type)或表达式(expression)参数,比如:
template<class Type, int n>
class Stack
{ ……
};
};
0 0
- 【c/c++】类模板
- 【C/C++】模板类
- 【c++】模板和模板类
- C/C++:函数模板与类模板
- [C/C++]模板函数与模板类
- c++vector模板类
- c++vector模板类
- c++:类模板
- [C++]类模板
- C++:类模板
- 【c++】类模板
- C++stack模板类
- 类模板与模板类(C++)
- C++,template,类模板和函数模板
- C++:函数模板、类模板及其特化
- C++---函数模板与类模板
- Linux C/C++ 模板:类模板(主模板)
- C/C++_log2000_函数模板与类模板笔记1
- PHP读取PDF页数的方法
- QT使用总结
- 什么叫MVCC
- 备战找工作0320
- PHP数组的相关处理函数2
- C++模板类
- Learning to Rank for IR的评价指标—MAP,NDCG,MRR
- USB接口定义
- java中的HashTable,HashMap和HashSet
- SVN服务器搭建和使用(一)
- (转)java实现基本数据结构(堆,栈,链表)——推荐后面的链表扩展部分
- Java继承与初始化
- SAX,DOM,PULL三种解析方式
- anroid Intent调用系统组件的方法