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 换成 class 返回类型 函数名(模板形参表) { 函数体 }
例:
templateT Max(T x,T y) { return x>y?x:y; }
这样编译器就可以自动将T替换成我们需要的int,double,long等,只需要在使用处表明参数类型即可
类模板的声明与其相似templateclass compare{ public: compare(T a,T b){ x=a; y=b; } T Max(){ return x>y?x:y; } private: T x,y; };
所谓模板类:是在类外定义使需要加上
例: void Compare
无名联合:使所有成员具有相同的存储地址
union{
int x;
double y;
}a;
a.x//形式访问
a.y



