Hour 5 Calling Functions
Inline Functions
认识
宏观上看,内联函数就是牺牲程序存储空间换取执行速度,当函数中语句很少的时候,可以得到性能的提升(可以理解为函数调用的时间都足够程序执行的时间了)。
本质为编译器把函数语句整体复制到发生函数调用的地方。
内联函数其实意义并不大,现在的编译器针对程序自动做很多优化。
用法
函数原型处,声明inline即可,函数实现(define)那里不需要,例如
inline int double (int para);
main()
{
some statements.............
}
int double(int target)
{
return target*target
}
Auto-Typed Return Values
C++ 14的一个特性是可以省函数返回值,例如
auto substract(int x, int y)
{
return x - y;
}
两个限制:
- 若存在多个返回值,则他们必须返回同一类型-------不要让编译器替你做选择
- 函数定义必须在函数调用之前
Summary
所有的函数都应该使用函数 prototype 声明,写出
- 函数名字
- 参数顺序和类型
- 返回类型
函数的 overloading 可以实现用同一个名字命名几个功能相似的函数,实际调用时候到底执行哪个呢?
- 参数数据类型
- 参数的数目
计算机自己会去匹配
Q&A
Q. 为毛不全用 global variable?
A. 全都用全局变量的话,意味着整个程序都可以访问这个变量了,也就意味着,不知道怎么滴就出错了,有可能打错字之类的都会不小心修改到全局变量,debug的时候会很绝望哒。就算是为了不跟自己较劲,也尽量少用 global varable.
Q.关于函数重载二义性的说明,请看以下两个函数,你不是说同名函数重载只看参数数据类型和参数数目吗?我这俩函数的数目不一样,能重载不?
int findArea(int width, int length =1); int findArea(int size);
A. 编译会报错, findArea(int ) 这个调用,既可以调用第一个,使用默认参数,也可以调用第二个,你让编译器替你选择,就会产生二义性!!!

浙公网安备 33010602011771号