6.3. 函数重载

Tip

若要用好函数重载,最好能让读者一看调用点(call site)就胸有成竹,不用花心思猜测调用的重载函数到底是哪一种。该规则适用于构造函数。

定义:

你可以编写一个参数类型为 const string& 的函数, 然后用另一个参数类型为 const char 的函数重载它:


  1. class MyClass {
    public:
    void Analyze(const string &text);
    void Analyze(const char
    text, size_t textlen);
    };



优点:

通过重载参数不同的同名函数, 令代码更加直观. 模板化代码需要重载, 同时为使用者带来便利.

缺点:

如果函数单单靠不同的参数类型而重载(acgtyrant 注:这意味着参数数量不变),读者就得十分熟悉 C++ 五花八门的匹配规则,以了解匹配过程具体到底如何。另外,当派生类只重载了某个函数的部分变体,继承语义容易令人困惑。

结论:

如果您打算重载一个函数, 可以试试改在函数名里加上参数信息。例如,用 AppendString()AppendInt() 等, 而不是一口气重载多个 Append().