Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法定义中的变量名必须与C++中的声明名相同吗?_C++_Class_Declaration_Language Lawyer_Definition - Fatal编程技术网

方法定义中的变量名必须与C++中的声明名相同吗?

方法定义中的变量名必须与C++中的声明名相同吗?,c++,class,declaration,language-lawyer,definition,C++,Class,Declaration,Language Lawyer,Definition,现在,我并不是说我认为这将是任何接近正确的编码实践,假设这是可能的;这个问题源于凌晨两点的一个错误: 假设类定义类似于以下内容: class myClass { public: void myMethod(const int & name); } 和定义: void myClass::myMethod(const int & altName) { //manipulate altName } 请注意,声明和定义的参数都是const int&类型,唯一的区别是变

现在,我并不是说我认为这将是任何接近正确的编码实践,假设这是可能的;这个问题源于凌晨两点的一个错误: 假设类定义类似于以下内容:

class myClass
{
public:
    void myMethod(const int & name);
}
和定义:

void myClass::myMethod(const int & altName)
{
    //manipulate altName
}
请注意,声明和定义的参数都是const int&类型,唯一的区别是变量名。 我知道这不会在Visual Studio 2012中引发编译器错误或警告,但它会在运行程序时导致错误吗


谢谢

不需要。在函数声明中甚至不需要变量名。它们的目的是提供文件

显然,这可以简单地检查:

void foo(int); // or void foo(int bar);

int main()
{
  foo(42);
}

#include <iostream>
void foo(int n)
{
  std::cout << n << std::endl;
}

一般来说,我看不出有什么理由使用不同的名称,而且在声明中可以不使用名称而不丢失信息的情况非常少。

为什么要给它们不同的名称

如果您正在使用Doxygen这样的系统来记录代码,那么为什么要混淆呢

只要保持一致,给他们起个有意义的名字

总之,为什么要让你和使用/维护你的代码的人的生活都变得艰难


旁白:为什么有些程序员喜欢寻找阻力最大的路径

不需要。函数声明中变量的偶数名称是可选的。但它在传递参数时帮助函数的用户。比如说,

void info(int,int);
以及


两者都是有效的,但在第一种情况下,您可能不确定要传递什么值,第二种情况给出了明确的指示

不,原型不需要与函数的定义匹配,无论是类的成员函数还是简单函数

你可以这样吃

class myClass {
public:
    void myMethod (const int &name1);
}
以及定义

void myClass::myMethod (const int &name2) {
    // use name2 here.
}
您甚至可以跳过函数原型中的参数名和变量名


希望对你有帮助。如果没有。请参阅当前C++工作草案中的相关章节。

您必须区分成员变量和函数参数。后者在声明和定义中不需要有相同的名称。建议是???@CouchDeveloper,我不知道OP要求推荐。我倾向于使用相同的名称,但有时一个具有明确名称和单个参数的函数可以在没有参数名称的情况下声明,而不会丢失信息。例如,double sqrtdouble.Agreed。特别是,我会发现使用不同的名字相当令人困惑;声明可能位于您无法控制的头文件中,并且您的参数名可能更具描述性,或者符合本地编码约定。@ClickRick-Eh?porogrammer是否同时写入头文件和definition.cpp文件。即遵守一个编码标准。你的意思是说,有些程序员有编写头文件的特权,而没有考虑到可怜的程序员是否会编写代码来执行该合同?
void myClass::myMethod (const int &name2) {
    // use name2 here.
}
class myClass {
public:
    void myMethod (const int &);
}