2012-04-19 38 views
6

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


实施

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*); 
} 
+1

这与头部无关,区别在于它是一个声明。 – 2012-04-19 09:53:18

+0

好点。编辑的问题。谢谢 – learnvst 2012-04-19 09:55:43

回答

11

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

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

  • 决定如果有几种方法具有相同的方法名
  • 决定输入参数是否有效使用哪种方法
  • 决定是否需要传输参数
  • 决定如何生成代码以调用方法并处理响应

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

1

我能想到的是版本1是更好的唯一原因是可读性。它们被忽略,因为它们对编译器无关紧要。

5

因为这些名称不影响编译器在函数外执行的任何操作。

6

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

1

..因为当标题包含在其他模块中时,它只需要类型来生成正确的代码。名字ae通常是有用和方便的,但是绝对必要。

相关问题