2014-02-06 54 views
-4

我们什么时候应该使用默认参数?什么是正确的语法,他们不应该在哪里使用?经常使用他们的好习惯还是坏习惯?他们影响效率吗?使用默认参数健康习惯还是坏习惯?

+0

参照这个网站。非常明确的解释。 http://www.learncpp.com/cpp-tutorial/77-default-parameters/ –

+0

这很正常。如果你不想使用默认参数。你必须重写函数。 – billz

+0

@billz:超载。 –

回答

1

唯一的情况下,我可以想到它会影响效率的地方是,当您将一些大的东西作为默认参数使用时,它不会被任何调用者使用。例如:

#include <iostream> 
void foo(std::ostream& out=std::cout) { 
    out << "foo"; 
} 

如果没有呼叫者使用默认参数,程序的其他部分并不需要<iostream>那么它将被列入徒劳,增加可执行文件的大小(和编译时间,这可能或者可能无关紧要)。

0

正确的语法可以在任何C++参考文献中找到,例如, http://msdn.microsoft.com/en-us/library/91563f79.aspx。他们不应该有任何效率的影响。至于使用提示,与其他所有内容一样,取决于具体情况。他们可能会把事情弄清楚或更复杂。 还有一件值得一提的事情 - 虚拟函数中的默认参数应该小心,因为它们的值是基于静态类型解析的,这可能是意想不到的。

+2

我们不要致电MSDN一个C++参考。 –

0

仅在声明一个(部件)函数的指定了参数的默认值,如下所示:

void fun(int value = 0); 

请注意,只有在参数列表中的最终参数可以具有默认 - 值。例如。以下是被禁止的:

void fun(int v1 = 0, int v2); 

当函数定义别的地方,必须省略的默认值。

void fun(int value) 
{ 
    cout << value << '\n'; // will print 0 when nothing was passed by the user 
} 

他们这样做以任何方式运行时的开销,当用户没有指定,编译器将这个值添加到函数调用。只有当特定的默认行为是直观的时才使用它们。

它有时可以作为函数重载的替代方法。上面的例子中的作用也已被

void fun(); 
void fun(int value); 

实现但这意味着你必须执行fun两次(其中fun()只是调用fun(0))。