template <class T>?
可以进行类模板,即? class 可以是 int ,double , string? 甚至 容器类型。
这里简单举个例子:
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
template <class T>
void swap(T *a,T *b)
{
T tmp=*a;
*a=*b;
*b=*tmp;
}
int main()
{
int t1=100;
int t2=200;
cout<<"交换前,t1 = "<<t1<<", t2 = "<<t2<<"\n\n";
swap(t1,t2);
cout<<"交换后,t1 = "<<t1<<", t2 = "<<t2<<"\n\n";
string s1="冰红茶";
string s2="茉莉茶";
cout<<"交换前,t1 = "<<s1<<", t2 = "<<s2<<"\n\n";
swap(s1,s2);
cout<<"交换后,t1 = "<<s1<<", t2 = "<<s2<<"\n\n";
}
需要注意的是:
1.为了明确地表明 swap() 是一个函数模板,还可以使用 如:swap<int>(t1,t2) 语法来调用这个函数。这将明确地告诉编译器它应该使用哪一种类型。
2.如果某个函数对所有数据类型都将进行同样进行的处理,就应该把它编写为一个模板。
3.如果某个函数对不同的数据将进行不同的处理,就应该对它进行重载。?
|