函数重载:
只要参数个数不同、参数类型不同、参数顺序不同,同名函数就可以重载。但是,只是返回类型不同是不允许函数重载的。因为调用函数只看参数匹配的。
void func(int a); //ok
void func(char a); //ok
void func(char a, int b); //ok
void func(int a,char b); //ok
char func(int a); //错误,与第一个函数名冲突
重载技术:
C++用名称压轧技术来改变函数名,区分参数不同的同名函数。名称压轧不是C++标准,移植程序时,可以通过extern C修饰,阻止函数名压轧。
压轧技术是非常简单的过程,一系列代码被附加到函数名上以标记参数类型以及他们出现的次序。
如:
int func(char a);
int func(chara,int b,double c);
在编译器内部分别被表示为:
func_c;
func_cid;
名称压轧是对编程来说是看不到的,在编译过程中完成的。