现在,我并不是说我认为这可以接近正确的编码实践(假设它甚至可能);这个问题源于凌晨2点的错误: 假设类定义类似于以下内容:
class myClass
{
public:
void myMethod(const int & name);
}
和定义:
void myClass::myMethod(const int & altName)
{
//manipulate altName
}
请注意,声明和定义的参数都是const int&类型,唯一的区别是变量名称。 我知道这不会(在Visual Studio 2012中)抛出编译器错误或警告,但是在运行程序时是否会导致错误?
谢谢!
答案 0 :(得分:5)
没有。你甚至不需要在函数声明中使用变量名。他们的目的是提供文件。
显然,这可以通过以下方式进行检查:
void foo(int); // or void foo(int bar);
int main()
{
foo(42);
}
#include <iostream>
void foo(int n)
{
std::cout << n << std::endl;
}
一般来说,我认为没有理由使用不同的名称,并且在声明中不使用任何名称而不会丢失信息的情况很少。
答案 1 :(得分:1)
为什么给他们不同的名字?
如果您使用Doxygen等系统来记录您的代码,那么为什么会混淆。
保持一致并给他们有意义的名字。
总结为什么让你和使用/维护你的代码的人都很难过生活
AN ASIDE 为什么有些程序员喜欢找到阻力最大的路径?!
答案 2 :(得分:1)
不需要。甚至函数声明中的变量名称也是可选的。但它在传递参数时有助于用户的功能。例如,
void info(int,int);
和
void info(int age,int salary);
两者都有效,但首先,您可能无法确定要传递的值,其次是明确指示。
答案 3 :(得分:0)
不,原型不需要匹配函数的定义(它是class
的成员函数或简单函数)。
你可以这样,
class myClass {
public:
void myMethod (const int &name1);
}
和定义。
void myClass::myMethod (const int &name2) {
// use name2 here.
}
您甚至可以跳过函数原型中的参数名称(变量名称)。
像,
class myClass {
public:
void myMethod (const int &);
}
希望它对你有所帮助。如果没有。阅读当前C ++工作草案中的相关部分。