Skip to main content

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 函数不能定义为内联函数(否则会使得主函数作用域变小, 操作系统无法访问主函数)
  • 在类体内实现的任何函数自动变为内联函数