如果我們要想做一套通用於不同類型的功能函數,那麼我們可以利用C++的模板機制只需要寫一套代碼。模板是實現代碼重用機制的一種工具,類似於JAVA的泛型,模板分爲函數模板和類模板。
函數模板
template <class 類型參數>
返回類型 函數名(模板參數表)
{
函數體
}
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
template<class T1,class T2>
bool Better(T1 x,T2 y)
{
return x>y?true:false;
}
int main(){
double d=2.8;
int c=15;
bool a;
a=Better(d,c);
cout<<a;
return 0;
}
類模板
template <class 類型>
class 類名
{
};
在定義模板類時在類名後綴添加<T>,例如下面的pop函數。
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
const int N=10005;
template<class T>
class Stack
{
private:
T S[N];
int size;
public:
T pop();
void clear(){
size=0;
}
void push(T x){
if(size==N) return;
else
S[size++]=x;
}
bool isempty(){
if(size==0)
{
return true;
}
else
{
return false;
}
}
};
template<class T>
T Stack<T>::pop()
{
if(size==0)return NULL;
else{
return S[--size];
}
}
int main(){
Stack<int> stack;
stack.clear();
for(int i=0;i<5;i++)
{
stack.push(i);
}
while(!stack.isempty())
{
cout<<stack.pop()<<endl;
}
return 0;
}
看過了類模板的定義和使用之後我們就能自己打造一套適應不同類型的自定義函數和自定義類了。