• C++中函数模板的理解


    一.函数模板(function Template)

    所谓函数模板,实际上就是建立一个通用函数。

    *函数定义时不指定具体的数据类型(使用虚拟类型代替),被调用时才知道数据的类型。

    *函数被调用时编译器根据实参反推数据类型-类型的参数化。

    形式如下

    //模板头与函数声明/定义永远是不可分割的整体
    template <typename 类型参数1 , 类型参数2 ,...>     typename也可改为class,早期的C++是用class
    返回值类型  函数名(形参列表){
             //在函数体中可以使用类型参数
    }
    

     下面看一个小例子,用一个模板函数去实现不同类型的数据交换。

    13 #include<iostream>                                 
    14 
    15 using namespace std;
    16 //书写函数模板
    17 template <typename T> void Swap(T& , T&);
    18 
    19 int main(int argc , char **argv)
    20 {
    21     int a =3 , b = 5;
    22     double c = 2.4 , d = 4.8;
    23     cout << "交换前:";
    24     cout << a << '	' << b << endl;
    25     Swap(a , b);
    26     cout << "排序后:";
    27     cout << a << '	' << b << endl;
    28     cout << "排序前:";
    29     cout << c << '	' << d <<endl;
    30     Swap(c , d);
    31     cout << "排序后:";
    32     cout << c << '	' << d <<endl;
    33 
    34     return 0;
    35 
    36 }
    37 
    38 template <typename T>
    39 void Swap(T &a , T &b)
    40 {
    41     T temp = a;
    42     a = b;
    43     b = temp;
    44 }          
    

    模板函数适合函数结构一样或者类似,都可以兼容的,我们只需要给他传递不同的数据类型。

    还有就是函数模板和函数重载并不是替换的关系,

    函数模板适合用于函数名和函数结构一样,且都可以兼容的。

    重载函数也是相同的函数名,但是他可以实现不同的业务需求。

  • 相关阅读:
    oracle grant授权的理解
    SQL SERVER 2005 版本以上 CTE递归查询的实现
    常用的加密解密技术之——【加密原理】
    常用的汇编指令
    常用加密解密技术之——【DES算法实现过程分析】
    VC6.0编译器中混有.c文件时出现fatal error C1853错误解决办法
    C++ Primer读书笔记
    Shot(数学+物理题,不简单)
    [置顶] C++/C 数据类型的取值范围
    <fzu1922>非主流
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/13311310.html
Copyright © 2020-2023  润新知