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

问题描述 投票:0回答:5

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


实施

void A::doStuff(int numElements, float* data)
{
    //stuff
}

声明 - 版本 1

class A
{
public:
    void doStuff(int numElements, float* data);
}

声明 - 版本 2

class A
{
public:
    void doStuff(int, float*);
}
c++ c standards
5个回答
11
投票

编译器只需要知道该方法需要什么样的参数。对于编译器来说,如何调用它们并不重要。

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

  • 如果有多个方法名称相同,请决定使用哪个方法
  • 判断输入参数是否有效
  • 决定参数是否需要强制转换
  • 决定如何生成代码来调用方法并处理响应

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


6
投票

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


5
投票
因为名称不会影响编译器在函数之外执行的任何操作。


1
投票
我认为版本 1 更好的唯一原因是可读性。它们被忽略,因为它们对编译器来说并不重要。


1
投票
..因为当标头包含在其他模块中时,它只需要类型即可生成正确的代码。 这些名称通常有用且方便,但并非绝对必要。

© www.soinside.com 2019 - 2024. All rights reserved.