zoukankan      html  css  js  c++  java
  • C++ 函数模板一(函数模板定义)

    //函数模板定义--数据类型做参数
    #include<iostream>
    using namespace std;
    
    /*
    函数模板声明
    1.函数模板定义由模板说明和函数定义组成,并且一个模板说明对应一个函数定义
    2.模板说明的类属参数必须在函数定义中至少出现一次
    3.函数参数表中可以使用类属类型参数,也可以使用一般类型参数
    */
    
    /*
    template关键字告诉c++编译器现在要进行泛型编程
    typename或者class告诉c++编译器T是一个数据类型,不要进行语法检查
    typename和class完全可以互相替换
    */
    template<typename T>//也可以写成template<class T>
    void myswap(T &a, T &b){
        T c = a;
        a = b;
        b = c;
    };
    //void Print(T &a,T &b){
    //    cout << "a=" << a << "
    b=" << b << endl;
    //}
    //报错:一个模板说明只能对应一个函数定义,想再定义一个函数,必须再写一个模板声明
    
    template<class T>
    void Print(T &a, T &b){
        cout << "a=" << a << "
    b=" << b << endl;
    }
    
    //多参数的函数模板
    template<typename T1,typename T2>
    //这种定义当调用函数时就会报错  MySort(a);
    //模板说明的类属参数必须在函数定义中至少出现一次
    void MySort(T1 a){
        cout << "aaa" << endl;
    }
    
    template<typename T>
    void Getnum(T a,int b){
        cout << "a=" << a << ";
    b="<<b << endl;
    }
    
    void main(){
        int a=1;
        int b = 2;
        //泛型编程函数的使用方法1---自动类型推导
        myswap(a, b);
        Print(a, b);
        //泛型编程函数的使用方法2---显式具体类型调用
        myswap<int>(a, b);
        Print(a, b);
        //MySort(a);    报错 : error C2783: “void MySort(T1)”: 未能为“T2”推导 模板 参数
        cout << "----------------" << endl;
        Getnum(a, 4);
        system("pause");
    }
  • 相关阅读:
    HTML: vertical algin Big/small div in same row (bootstrap)
    unix时间转换
    chrome工具分析
    DNF 包管理器
    安装nodejs
    location属性解释
    angular深入理解途径
    ui-router与ngRoute
    angular $location服务获取url
    Python文件操作
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5656670.html
Copyright © 2011-2022 走看看