我们应该何时使用默认参数?什么是正确的语法,它们应该在哪里使用?经常使用它们是好习惯还是坏习惯?它们会影响效率吗?
答案 0 :(得分:1)
可以在任何C ++参考中找到正确的语法,例如: http://msdn.microsoft.com/en-us/library/91563f79.aspx。他们永远不应该有任何效率影响。至于使用提示,与其他一切一样,它取决于具体情况。他们可能会使事情变得清晰或更复杂。 还有一件事值得一提 - 人们应该注意虚函数中的默认参数,因为它们的值是根据静态类型解决的,这可能是意外的。
答案 1 :(得分:1)
只有在我将大事件作为默认参数包含但其未被任何调用者使用时,我才能想到影响效率的地方。例如:
#include <iostream>
void foo(std::ostream& out=std::cout) {
out << "foo";
}
如果没有任何调用者使用默认参数,并且程序的其余部分不需要<iostream>
那么它将被包含在徒劳中,增加了可执行文件的大小(以及编译时间,可能会也可能不会很重要。)
答案 2 :(得分: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)
)。