c++学习总结【2】inline函数,缺省函数,函数重载与函数模板
1.inline函数
内联是一种空间换时间的做法,不建议声明和定义分离,会导致链接错误,若函数的执行开销小于清栈开销,则使用内联函数处理的效率高
2.缺省函数
缺省参数是在定义函数时为形参指定缺省值(默认值)。
缺省参数可以有多个,但所有缺省参数必须放在参数表右侧,即先定义非缺省的参数。
缺省参数一般在函数的声明中指定,而函数定义中则不能再次指定。
3.函数重载
两个或两个以上的函数有相同的函数名,而他们的参数数据类型不同,或是参数的个数不同则称为函数的重载。
例如:
void printf(int a,int b)
void printf(char a,char b)
返回类型不同不能作为函数重载的依据。
若两个函数之间只有缺省实参不同,则第二个函数被称为第一个函数的重复声明。
const 和volatile在判断是否函数重载不被考虑。
但当const 或volatile修饰的是指针形参时则需要考虑,并作为函数重复声明的依据。
名字粉碎
c++函数在内部通过修饰名识别。修饰名包括函数名,类名,调用约定,返回类型,参数决定。
这也是c++能够函数重载而c不能函数重载。
函数重载的依据
参数的数据类型(首要),值型别。
4.函数模板
简化函数重载,
template<模板参数表>
返回类型 函数名(形式参数表)
{
//函数体
}
一份函数可以解决各个类型的函数重载。模板参数类型是编译的时候推演出来的,
模板无法推演出返回值类型,应该明确给出,如max< double>(12,23.23)