1、函数模板
C++允许用同一个函数名定义多个函数,这些函数的参数个数和参数类型不同,例
int Max(int a,int b){
return a>b?a:b;
}
long Max(long a,long b){
return a>b?a:b;
}
double Max(double a,double b){
return a>b?a:b;
}
虽然这些函数体都是相同的,但是由于参数类型不同,所以是不同的函数,但在C++上可以将这些函数重载,使他们只用写一遍,使代码的重用性大大提高。
函数模板的声明格式如下
template <typename 类型参数> 也可以将typename 换成 class
返回类型 函数名(模板形参表)
{
函数体
}
例:
template<class T>
T Max(T x,T y)
{
return x>y?x:y;
}
这样编译器就可以自动将T替换成我们需要的int,double,long等,只需要在使用处表明参数类型即可
类模板的声明与其相似
template<typename T>
class compare{
public:
compare(T a,T b){
x=a;
y=b;
}
T Max(){
return x>y?x:y;
}
private:
T x,y;
};
所谓模板类:是在类外定义使需要加上<type>
例: void Compare<type>::show(type ob){}
无名联合:使所有成员具有相同的存储地址
union{
int x;
double y;
}a;
a.x;//形式访问
a.y;