内联函数
内联函数(又称在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展;也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方,从而节省了每次调用函数带来的额外时间开支。
普通函数:
int Min(int a,int b)
{
if(a<b) return a;
return b;
}
int main()
{
int a,b;
Min(a,b);
return 0;
}
当电脑运行主函数时,会将Min函数进行入栈和出栈
内联函数:
inline int Max(int a,int b)
{
if(a>b) return a;
return b;
}
int main()
{
int a,b;
Min(a,b);
return 0;
}
inline是内联函数的标志,说明该函数不会再出栈和入栈,而是直接贴在主函数体上
但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。另外还需要特别注意的是对递归函数的内联扩展可能引起部分编译器的无穷编译。
函数重载
重载函数是函数的一种特殊情况,允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。
正确重载:
int Min(int a,int b)
{
if(a<b) return a;
return b;
}
double Min(double a,double b)
{
if(a<b) return a;
return b;
}
重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。
错误重载:
int Min(int a,int b)
{
if(a<b) return a;
return b;
}
bool Min(int a,int b)//函数名和形参相同,则不属于函数的重载,而是重复定义,编译器会报错
{
if(a<b) return true;
return false;
}