2011-12-06 39 views

回答

7

命名它们的好处是你可以在文档中引用它们。 (这包括你的编辑器/ IDE选择它们,并在你打出这样的函数时提示它们作为提示。)

缺点是名称可能会根据函数的实现而改变,除了事实函数声明中的名称可能与函数定义中的名称不同。 (IOW:我看不出有什么缺点)

+0

+1,但你也可能会提到,如果你在声明中加入了变量名,智能感知(或者你可能拥有的任何东西)都可以选择它们。这只不过是文档,而是一个有用的阐述。 –

+0

@JohnDibling:的确,我忘记了! – sbi

3

对于文档的原因主要

+0

如果定义和声明是相同的(给出或采用分号),维护也更容易 –

3

命名参数有当您使用支持自动完成的IDE工作显著的优势。当你开始输入你的函数的名字时,IDE弹出一个建议列表。看到findUser(string firstName, string lastName)告诉你很多比简单findUser(string,string)

1

这是更多的风格问题。就个人而言,如果我看到没有命名参数的函数声明,我发现很难阅读。我认为你可以键入C++的能力越强,它就越好。

1

一个优势是,他们可以传达更多信息时,参数类型相同

考虑

CoordSystem CreateCoordinateSystem(const UnitVector& xdirection, 
    const UnitVector& ydirection, const UnitVector& zdirection 
) 

CoordSystem CreateCoordinateSystem(const UnitVector& , 
    const UnitVector& , const UnitVector&) 
0

在声明中不会有任何真正的编程优势或缺点。然而,有一个风格的优点,我能想到的:

当你没有在函数中使用的参数,你可以不命名在声明此参数和定义:

void foo(int); 

void foo(int) 
{ 
} 

命名您在定义中没有使用的参数不是非法的,但是它是一个皮棉警告!我提到的样式优势不是在声明中命名参数,因此浏览头文件的人会知道某个参数未在定义中使用。但是,只有在定义和声明之间同步未命名时,才会这样。

这里的时候,你可能想没有名称的参数为例:

class Base 
{ 
    virtual void foo(int a) = 0; 
}; 

class Child1 
{ 
    virtual void foo(int a) { std::cout << a + 1 << std::endl; } 
}; 

class Child2 
{ 
    virtual void foo(int) { std::cout << "mwahaha" << std::endl; } 
}; 

在这种情况下,参数没有命名,但仍必须提供,因为函数原型必须匹配其家长。

+1

我不会downvote,但这并不完全适用。这个问题具体是关于**声明**中的参数命名,但是您所做的(有效)点仅适用于函数**定义**。 –