C++ 面试题 目录

C++ 中函数模板 (function template) 的用法?

推荐答案

-- -------------------- ---- -------
-------- ----------

-- --------
-------- --------- --
- ----- -- - -- -
    ------ - - --
-

--- ------ -
    -- ------
    --------- -- -------- --------- - -- ------ -- -- ----------
    --------- -- ------- --------- - -- -------- ---- -- ----------
    ------ --
-

本题详细解读

1. 函数模板的定义

函数模板允许你编写一个通用的函数,该函数可以处理多种数据类型。通过使用 template <typename T> 来定义一个模板,其中 T 是一个占位符类型,表示任意数据类型。

在这个例子中,add 函数可以接受任意类型的参数 ab,并返回它们的和。

2. 函数模板的使用

在调用函数模板时,编译器会根据传入的参数类型自动推导出模板参数 T 的具体类型。

  • add(3, 4) 中,T 被推导为 int 类型。
  • add(3.5, 4.5) 中,T 被推导为 double 类型。

3. 模板参数的手动指定

你也可以手动指定模板参数类型,而不是让编译器自动推导。

在这个例子中,T 被显式指定为 int,因此 4.5 会被隐式转换为 int 类型。

4. 函数模板的优势

  • 代码复用:通过函数模板,可以编写一次代码,处理多种数据类型,减少代码重复。
  • 类型安全:函数模板在编译时进行类型检查,确保类型安全。
  • 灵活性:函数模板可以处理用户自定义类型,只要这些类型支持模板中使用的操作(如 + 操作符)。

5. 注意事项

  • 类型推导:编译器在推导模板参数时,要求所有参数的类型必须一致,否则会导致编译错误。
  • 模板实例化:每次使用不同的类型调用函数模板时,编译器都会生成一个新的函数实例,这可能会导致代码膨胀。

通过使用函数模板,C++ 程序员可以编写更加通用和灵活的代码,适应多种数据类型和需求。

纠错
反馈