为什么函数参数不能是静态的

时间:2014-03-20 17:35:00

标签: static function-parameter c++-concepts

任何人都可以告诉我为什么函数参数不能是static? 这是函数参数在Stack上声明并在函数返回时被解除分配的原因吗?没有办法保留参数值?只是困惑。请澄清。

感谢。

1 个答案:

答案 0 :(得分:0)

关键字static可能会被视为有些过度"重载"。

以下用法选项都是可行的:

  • 静态局部变量
  • 静态全局变量
  • 静态成员变量
  • 静态全局函数
  • 静态成员函数

变量:

就运行时而言,所有类型的静态变量基本相同。它们都位于程序的数据部分中,并且它们的地址在程序执行期间保持不变。因此,它们之间的唯一区别是在编译期间,在声明范围内:

  • 静态局部变量:仅在函数范围内由编译器识别
  • 静态全局变量:仅在文件范围内由编译器识别
  • 静态成员变量:仅在类
  • 的范围内由编译器识别

功能:

就运行时而言,所有类型的函数(静态和非静态)基本相同。它们都驻留在程序的代码段中,并且它们的地址在程序执行期间保持不变。因此,它们之间的唯一区别是在编译期间,在声明范围内:

  • 静态全局函数:仅在文件范围内由编译器识别
  • 静态成员函数:仅在类
  • 范围内由编译器识别

关于你的问题,参数被传递给堆栈中的函数。拥有static是没有意义的,因为这会将它们有效地放在数据部分中。如果它们位于数据部分中,那么函数可以简单地从那里读取它们,而不是将它们传递给堆栈中。