1.重载
在同一个作用域中函数名相同但参数表不同的函数构成重载关系。
1)C++是通过换名,即将参数表信息汇合到函数名中,实现重载。通过在函数声明前写上extern "C"
显式地告知编译器对该函数用C的方式生成接口,即不做换名。当然不换名的函数无法实现重载。
2)函数重载不仅和函数的定义有关,而且与函数调用的上下文有关,只要在同一个作用域中可见,且需要通过重载解析规则确定调用版本,即具有重载特性。
2.缺省参数
1)如果提供实参,取实参的值,否则取缺省值。
2)如果某个参数带有缺省值,那么它后面的所有参数必须都带有缺省值——靠右原则。
3)注意防止和重载发生冲突。
3.哑元
只有类型而没有名称的参数。
本身没有参数但是又需要通过重载区分不同实现版本的函数,往往会用到哑元。
向下兼容。
4.内联
1)内联是一种优化策略,用编译好的函数二进制代码去替换对该函数的调用,通过牺牲空间换取执行时间。
2)通过inline关键字显式地告诉编译器该函数希望被内联优化。
inline void foo (...) { ... }
对于稀少调用的复杂大函数,递归函数,虚函数,编译会拒绝做内联。
3)结构体/类的声明和定义如果放在一起,其成员函数缺省为内联,可以省略inline关键字。