卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章79808本站已运行4416

C++ 函数重载与函数模板的区别

函数重载与函数模板的区别:语法:函数重载使用同名函数,而函数模板使用类型占位符。类型检查:函数重载在编译时检查参数类型,而函数模板在调用时根据类型生成函数。代码生成:函数重载不生成新函数,而函数模板会根据类型生成特定版本函数。场景:函数重载适用于处理特定类型的不同操作,而函数模板适用于处理未知或通用类型。

C++ 函数重载与函数模板的区别

C++ 函数重载与函数模板的区别

函数重载

  • 定义:在同一个作用域内,允许存在同名函数,但其参数列表不同。
  • 用法:

    立即学习“C++免费学习笔记(深入)”;

    void print(int val);  // 打印整数
    void print(double val);  // 打印浮点数
  • 编译时:编译器根据实际调用时的参数类型选择对应的函数。

函数模板

  • 定义:使用通用类型占位符(例如 T)定义函数,允许处理不同类型的数据。
  • **用法:

    template <typename T>
    void print(T val);  // 模板函数,接受任意类型参数
  • 编译时:编译器会根据调用时的实际类型生成特定版本的函数。

区别

特征函数重载函数模板
语法同名函数使用尖括号 <> 定义
类型检查参数类型根据实际调用时的类型
代码生成不生成新函数根据类型生成特定版本函数
使用场景处理参数类型不同的特定操作处理未知或通用的数据类型

实战案例

使用函数重载为不同类型的数据提供打印功能:

void print(int val) {
  std::cout << val << std::endl;
}

void print(double val) {
  std::cout << val << std::endl;
}

使用函数模板为任意类型的数据提供打印功能:

template <typename T>
void print(T val) {
  std::cout << val << std::endl;
}
卓越飞翔博客
上一篇: C++ 函数中引用和指针传递示例讲解
下一篇: C++ 函数参数传递:引用与指针的利弊分析
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏