c++基础-c++对c的扩充:函数模版
发布日期:2021-05-08 09:42:07 浏览次数:20 分类:精选文章

本文共 1089 字,大约阅读时间需要 3 分钟。

函数模版(function template)

  • 建立一个通用函数,其函数类型和形参类型不具体指定,使用一个虚拟的类型来代表,这个通用函数就称为函数模版。
  • 模板函数的形式为:template< typename T >。类型参数T是一个虚拟的类型名,等到函数调用时根据实参的类型来确定T是什么类型。

例如,编写一个可以对多个数据类型(如int、float、double)进行排序的函数。使用模板函数实现。

#include   using namespace std;  template  void sort(T* a, int n) {      for (int i = 0; i < n-1; i++) {          for (int j = 0; j < n-1; j++) {              if (a[j] > a[j+1]) {                  T temp = a[j];                  a[j] = a[j+1];                  a[j+1] = temp;              }          }      }      for (int i = 0; i < n; i++) {          cout << " " << a[i];          cout << endl;      }      return;  }  int main() {      int n = 10;      int a[10] = {8, 9, 5, 7, 6, 1, 3, 8, 4, 8};      float b[10] = {1.4, 456.3, 343.4, 16.2, 546, 412.5, 12.1};      double c[10] = {12.455, 135.5, 12.45, 156.5, 5465.2, 12.5, 124.1};      sort(a, n);      sort(b, n);      sort(c, n);      return 0;  }

输出结果如下:

通过上述代码,可以看到模板函数的实际应用。无论是整数、浮点数还是双精度数,排序函数都能正确处理。这种通用性的设计极大地提高了代码的复用性和维护性。

注意事项:

1. 模板函数的类型参数T必须在使用前明确指定,否则会导致编译错误。 2. 在函数调用时,需要传递适当的类型实参。 3. 模板函数的局限性在于它只能处理与T同类型的实参,无法进行类型转换。
上一篇:c++基础-c++对c的扩充;string类型定义字符串变量
下一篇:c++基础-c++对c的扩充:const定义常变量,有默认参数的函数

发表评论

最新留言

不错!
[***.144.177.141]2025年03月24日 09时30分50秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章