Function
Default Parameters
- 不能在 函数原型声明 与 函数定义 中 同时 定义参数的默认值,会产生默认值冲突
- 所有缺省参数必须位于参数列表右边
- 不能用前一个参数初始化后一个参数
- 当同时有
int g(void)int g(int x = 1)时, 不能调用 g() (具有二义性)
int bar(int x , int y = 5, int z = m(u,v));
int foo(int x, int y = x++); // error
Inline
以下情况会造成内联失败:
- 内联函数中使用 分支/循环/开关/函数调用
- 内联函数定义出现在调用后面(先调用后定义)
- 其他函数访问了内联函数入口地址
- 内联函数定义为(纯)虚函数
内联最终结果:
- 内联成功后, 原函数会被编译器清除
- 不管内联是否成功, 内联函数作用域局限于当前源文件
- 全局 extern main 函数不能定义为内联函数(否则会使得主函数作用域变小, 操作系统无法访问主函数)
- 在类体内实现的任何函数自动变为内联函数