zoukankan      html  css  js  c++  java
  • 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 }          
    

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

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

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

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

  • 相关阅读:
    Cheatsheet: 2011 03.19 ~ 03.31
    Cheatsheet: 2011 03.07 ~ 03.14
    Cheatsheet: 2011 04.01 ~ 04.10
    Cheatsheet: 2011 04.20 ~ 04.29
    Java动手动脑02
    Java日报10.5
    java四则运算第三阶段
    验证码界面——Java图形界面
    Java四则运算V3.0
    Java日报10.8
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/13311310.html
Copyright © 2011-2022 走看看