为什么函数参数名称在c ++声明中不重要?

lea*_*vst 6 c c++ compiler-construction standards

声明中的函数参数名称(很可能存在于头文件中)似乎被编译器完全忽略.允许以下使用声明版本1或2进行编译的原因是什么?


履行

void A::doStuff(int numElements, float* data)
{
    //stuff
}
Run Code Online (Sandbox Code Playgroud)

声明 - 第1版

class A
{
public:
    void doStuff(int numElements, float* data);
}
Run Code Online (Sandbox Code Playgroud)

声明 - 第2版

class A
{
public:
    void doStuff(int, float*);
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*lte 11

编译器只需要知道方法需要什么类型的参数.编译器如何调用它们并不重要.

编译器需要知道参数类型有以下几个原因:

  • 如果有多个方法具有相同的方法名称,请确定使用哪种方法
  • 确定输入参数是否有效
  • 确定是否需要铸造参数
  • 决定如何生成CODE以调用方法并处理响应

但是,我建议使用第一个标题版本.它可以帮助其他开发人员(和您自己)使用这些函数并知道哪些参数具有哪些含义.


Luc*_*ore 6

参数名称不是函数签名的一部分.除非您使用它们,否则即使在函数实现中也不需要具有名称.


Oli*_*rth 5

因为名称不会影响编译器在函数外部执行的任何操作.