6.3. 函数重载
Tip
若要用好函数重载,最好能让读者一看调用点(call site)就胸有成竹,不用花心思猜测调用的重载函数到底是哪一种。该规则适用于构造函数。
定义:
你可以编写一个参数类型为const string&
的函数, 然后用另一个参数类型为const char
的函数重载它:
- class MyClass {
public:
void Analyze(const string &text);
void Analyze(const char text, size_t textlen);
};
优点:
通过重载参数不同的同名函数, 令代码更加直观. 模板化代码需要重载, 同时为使用者带来便利.
缺点:
如果函数单单靠不同的参数类型而重载(acgtyrant 注:这意味着参数数量不变),读者就得十分熟悉 C++ 五花八门的匹配规则,以了解匹配过程具体到底如何。另外,当派生类只重载了某个函数的部分变体,继承语义容易令人困惑。
结论:
如果您打算重载一个函数, 可以试试改在函数名里加上参数信息。例如,用AppendString()
和AppendInt()
等, 而不是一口气重载多个Append()
.