模板和泛型编程
模板
c++使用模板实现参数的多态化,可以让类或者函数声明为一种通用形式。编写程序时不需要考虑具体参数类型。提高程序的通用性
模板:
- 函数模板
- 类模板
1.函数模板
template <typename T> :
template模板的关键字 typename也可以用class替换,用来修饰形参T
根据传入实参类型,动态的指明T的类型
#include <iostream>
using namespace std;
//void Myswap(int& n,int& m){
// int t=n;
// n=m;
// m=t;
//}
//void Myswap(char& n,char& m){
// char t=n;
// n=m;
// m=t;
//}
class Person{
private:
string name;
public:
Person(string name){
this->name=name;
}
string show(){
return name;
}
};
template <typename T>
void Myswap(T& n,T& m){
T t=n;
n=m;
m=t;
}
int main()
{
int a=10,b=20;
Myswap(a,b);
char ch='a';
char ch2='b';
Myswap(ch,ch2);
Person tang("唐僧僧");
Person Monkey("孙空空");
Myswap(tang,Monkey);
cout<<a<<" "<<b<<endl;
cout<<ch<<" "<<ch2<<endl;
cout<<"表面上唐僧僧实际是:"<<tang.show()<<endl;
}
- 如果传入参数类型不同,需要模板中声明多个通用类型
- 编写新的函数模板 ,需要重写进行模板的声明
#include <iostream>
using namespace std;
template <class T>
void add(T& a,T& b){
cout<<a+b<<endl;
}
template <class T,class T2>
void add(T& a,T2&