代码改变世界

Effective C++ 学习笔记(17)

2011-08-06 00:09  Daniel Zheng  阅读(193)  评论(0编辑  收藏  举报

在函数重载和设定参数缺省值间慎重考虑


会对函数重载和设定参数缺省值产生混淆的原因在于,它们都允许一个函数以多种方式被调用:

void f(); // f 被重载
void f(int x);
f();
// 调用 f()
f(10); // 调用f(int)
void g(int x = 0); // g 有一个
// 缺省参数值
g(); // 调用 g(0)
g(10); // 调用 g(10)

  那么,什么时候该用哪种方法呢?

  答案取决于另外两个问题。第一,确实有那么一个值可以作为缺省吗?第二,要用到多少种算法?一般来说,如果可以选择一个合适的缺省值并且只是用到一种算法,就使用缺省参数。否则,就使用函数重载。