zoukankan      html  css  js  c++  java
  • 模板

    模板

     1 # include <iostream>
     2 using namespace std;
     3 
     4 template <typename T> //模板声明,其中T为类型参数
     5 
     6 T max ( T t1, T t2 ,T t3){ //定义一个通用函数,用T作虚拟的类型名
     7     if( t1 < t2 ) t1=t2 ;
     8     if( t1 < t3 ) t1 = t3;
     9     return t1;
    10 }
    11 /*
    12 在使用带有默认参数的函数时有两点要注意:
    13 1) 如果函数的定义在函数调用之前,则应在函数定义中给出默认值。如果函数的定义在函数调用之后,则在函数调用之前需要有函数声明,此时必须在函数声明中给出默认值,在函数定义时可以不给出默认值
    14 2) 一个函数不能既作为重载函数,又作为有默认参数的函数。因为当调用函数时如果少写一个参数,系统无法判定是利用重载函数还是利用默认参数的函数,出现二义性,系统无法执行。
    15 
    16 */
    17 int getDefault(int i = 20 ){ // 有默认参数的函数
    18 
    19     return i ;
    20 }
    21 
    22 
    23 int main (void){
    24     int maxI = max(1,2,3); //调用模板函数,此时T被int取代
    25 
    26     cout << "maxI = " << maxI << endl;
    27     double maxd = max (1.1  , 2.2  , 3.3  ); //调用模板函数,此时T被double取代
    28 
    29     cout << "maxd = " << maxd << endl;
    30 
    31     int defaultValue = getDefault();
    32 
    33     cout << "defaultValue = " << defaultValue << endl;
    34 
    35     return 0 ; 
    36 }
    37 /*
    38 定义函数模板的一般形式为 
    39 template < typename T>  或  template <class T>
    40 通用函数定义                          通用函数定义
    41 
    42 一个函数首部的int/double改为T即可。即用虚拟的类型名T代替具体的数据类型。在对程序进行编译时,遇到第13行调用函数max(1, 2, 3),
    43 编译系统会将函数名max与模板max相匹配,将实参的类型取代了函数模板中的虚拟类型T。此时相当于已定义了一个函数:
    44 
    45 int max(int a,int b,int c)
    46 {if(b>a) a=b;
    47  if(c>a) a=c;
    48  return a;
    49 }
    50 然后调用它。后面两行(14,15行)的情况类似。
    51 类型参数可以不只一个,可以根据需要确定个数。如
    52 template <class T1,typename T2>
    53 可以看到,用函数模板比函数重载更方便,程序更简洁。但应注意它只适用于函数的参数个数相同而类型不同,且函数体相同的情况,如果参数的个数不同,则不能用函数模板。
    54 
    55 */
  • 相关阅读:
    【转载】 miniImageNet数据集介绍
    【转载】 聊聊统计学里的置信度和置信区间
    小样本学习(Few shot learning)标准数据集(miniImageNet、tieredImageNet、FewshotCIFAR100)下载地址
    配色素描必备书籍分享
    Jq滚动条插件写法(二)
    获得样式属性和外联样式
    windows7下gvim多标签打开新文件
    JQ插件jkscroll应用到页面中的效果
    《精通javascript》几个简单的函数(一)
    事件冒泡
  • 原文地址:https://www.cnblogs.com/mjorcen/p/3842414.html
Copyright © 2011-2022 走看看