模板来设计模板函数和模板类

模板功能提供了在函数和类中将类型作为参数的能力,让通用的模板函数或者模板类成为现实。模板函数或者模板类声明如下:

template<typename T>-------------模板前缀;T为类型参数,可以是常见任何类型

模板函数定义如下:

template<typename T>

返回类型 函数名(T 参数....){

  operations...(可以定义T类型变量)

}

模板类声明:

template<typename T>

class 类名{

 返回类型 函数名(T 参数....)};

模板类声明后,分开,进行类定义:

template<typename>

返回类型 类名<T>::函数名(

T 参数....){

  operations...(可以定义T类型变量)

}

比如定义一个T类型的模板类stack,可以是int,double,string:

#ifndef A
#define A
template<typename T>
class stack{
private:
  T ele[100];
int size;
public:
	stack(){size=0;}
	bool empty();
	T peek();
	void push(T x);
	T pop();
	int getsize(){return size;}};//类声明
	template<typename T>
	bool stack<T>::empty(){if(size==0) return true;
	else return false;}
	template<typename T>
	T stack<T>::peek(){if(empty()) throw runtime_error("empty");
	else return ele[size-1];}
	template<typename T>
	void stack<T>::push(T x){ele[size++]=x;}
	template<typename T>
	T stack<T>::pop(){if(empty()) throw runtime_error("empty");
	else return ele[--size];}//类定义
#endif 
主函数调用:
#include"15.h"
template<typename T>
void prt(stack<T> &ee){
while(!ee.empty()){
	try{
		cout<<ints.pop()<<" ";}
	catch(exception&e){cout<<e.what()<<endl;}
}
cout<<endl;}//模板函数
int main(){
stack<int> ints;
for(int i=0;i<10;i++)
	ints.push(i);
prt(ints);
stack<string> ss;
ss.push("\"beijing\"");
ss.push("\"shanghai\"");
ss.push("\"nanjing\"");
prt(ss);
system("pause");
return 0;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值