我们什么时候应该使用默认参数?什么是正确的语法,他们不应该在哪里使用?经常使用他们的好习惯还是坏习惯?他们影响效率吗?使用默认参数健康习惯还是坏习惯?
-4
A
回答
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)
)。
相关问题
- 1. ruby默认参数习惯用法
- 2. 空旗是坏习惯吗?
- 3. 是mysql_connect头部坏习惯?
- 4. Scrum Master的坏习惯
- 5. Class scope typedef坏习惯?
- 6. 使用幻数是好习惯吗?
- 7. 是否将php.ini的session.auto_start设置为1认为是坏习惯?
- 8. hjkl习惯破坏 - 软版本
- 9. 第二组状态回调 - 坏习惯?
- 10. 为什么重写window.onresize坏习惯?
- 11. 习惯的方法
- 12. 习惯在Objective-C
- 13. php - RAII好习惯?
- 14. 习惯的方法
- 15. 这是使用iframe的好习惯吗
- 16. 使用地图进行Java 8流的习惯性使用习惯?
- 17. 在网站主页上使用flash是否被认为是坏习惯?
- 18. 在被认为是坏习惯的Perl子程序中使用标签?
- 19. 具有默认值的Array.reduce的CoffeeScript习惯用法
- 20. 嵌套是否与惯用Rust中的不良习惯匹配?
- 21. 从其他函数调用函数还是作为数组的参数调用好/坏习惯?
- 22. 周期性参考不良习惯?
- 23. 使用strconv.ParseInt和ints的习惯用法
- 24. 使用过滤器的习惯用法()
- 25. 过度依赖预处理器是否是一个坏习惯?
- 26. 这个习惯uialertview呢?
- 27. 多线程的好习惯
- 28. Dockerfile结束的好习惯?
- 29. 标准编码习惯
- 30. 习惯和Facebook登录
参照这个网站。非常明确的解释。 http://www.learncpp.com/cpp-tutorial/77-default-parameters/ –
这很正常。如果你不想使用默认参数。你必须重写函数。 – billz
@billz:超载。 –