声明中的函数参数名称(很可能存在于头文件中)似乎被编译器完全忽略。允许以下使用声明版本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*);
}
答案 0 :(得分:11)
编译器只需要知道方法需要什么类型的参数。编译器如何调用它们并不重要。
编译器需要知道参数类型有以下几个原因:
但是,我建议使用第一个标题版本。它可以帮助其他开发人员(和您自己)使用这些函数并知道哪些参数具有哪些含义。
答案 1 :(得分:6)
参数名称不是函数签名的一部分。除非您使用它们,否则即使在函数实现中也不需要 。
答案 2 :(得分:5)
因为名称不会影响编译器在函数外部执行的任何操作。
答案 3 :(得分:1)
我能想到第1版的唯一原因是可读性。它们被忽略,因为它们对编译器无关紧要。
答案 4 :(得分:1)
..因为当标题包含在其他模块中时,它只需要类型来生成正确的代码。名称ae通常有用且方便,但绝对必要。