函数重载总结

章节回顾

  • 函数重载允许在同一作用域内定义多个同名函数,只要它们的参数表不同。
  • 编译器通过重载决议根据实参匹配最佳函数。
  • 重载区分仅考虑:函数名、形参个数、形参类型及成员函数限定符;返回类型不参与区分
  • 默认实参为形参提供默认值,调用时可省略;所有后续形参必须同样拥有默认值。
  • 函数模板使用占位类型(模板形参)生成可适用于任意类型的函数,避免重复代码。
    • 模板实参可由编译器推导或显式指定。
    • 模板定义应放在头文件中,以便在多个源文件中使用。
  • 非类型模板形参接受 constexpr 值,用于需在编译期已知常量的场景。

测验

问题 1

下列代码能否通过编译?若不能,原因是什么?

int add(int x, int y);
double add(int x, int y);

问题 2

修正下述程序,使其能通过编译并输出 4:

#include <iostream>

template <typename T>
T twice(T x);

int main()
{
    std::cout << twice(2) << '\n';
    return 0;
}

(参考答案略)

关注公众号,回复"cpp-tutorial"

可领取价值199元的C++学习资料

公众号二维码

扫描上方二维码或搜索"cpp-tutorial"