C++ 使用默认参数是健康的习惯还是坏习惯?

C++ 使用默认参数是健康的习惯还是坏习惯?,c++,C++,什么时候应该使用默认参数?什么是正确的语法,在哪里不应该使用?经常使用它们是好习惯还是坏习惯?是否影响效率? < P>在任何C++引用中都可以找到正确的语法。它们不应该对效率产生任何影响。至于使用提示,与其他所有内容一样,它取决于具体情况。它们可能会使事情变得清晰或更复杂。 还有一件值得一提的事情-在虚拟函数中,应该小心使用默认参数,因为它们的值是基于静态类型解析的,这可能是意外的。我能想到的唯一影响效率的情况是,当您包含一些大的参数作为默认参数,但它没有被任何调用方使用时。例如: #inclu

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

< P>在任何C++引用中都可以找到正确的语法。它们不应该对效率产生任何影响。至于使用提示,与其他所有内容一样,它取决于具体情况。它们可能会使事情变得清晰或更复杂。
还有一件值得一提的事情-在虚拟函数中,应该小心使用默认参数,因为它们的值是基于静态类型解析的,这可能是意外的。

我能想到的唯一影响效率的情况是,当您包含一些大的参数作为默认参数,但它没有被任何调用方使用时。例如:

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

如果没有调用方使用默认参数,并且程序的其余部分不需要,那么它将被徒劳地包含,从而增加可执行文件的大小和编译时间,这可能会或可能不会有多大影响。

参数的默认值仅在成员函数的声明中指定,如下所示:

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
}

但这意味着您必须实现fun两次,其中fun只调用fun0。

请参阅此网站。解释得很清楚。这很正常。如果不想使用默认参数。您必须重写函数。不要将MSDN称为C++引用。
void fun();
void fun(int value);