zoukankan      html  css  js  c++  java
  • C++03:模板

    一.模板的作用

    模板是C++支持参数化多态的工具,通常有函数模板和类模板

    函数模板针对仅参数类型不同的函数

    类模板针对数据成员和成员函数类型不同的类

    使用模板能够编写出与类型无关的代码

    模版分为函数模版类模版

    按我的理解,C++设计出模版的作用就是把 数据类型和函数功能进行隔离,能够让代码的通用性更高一些,这就是更加适合封装和重用

    二.函数模板

    1.使用

    函数模板中,会根据传入实参的类型来替换函数模板中形参

    //声明
    template <class T> 
    void Swap(T&a ,T&b){
        ...
    }
     
    template <typename T> 
    void Swap(T& a,T& b){
     
    }
    
    //调用
    int a,b;
    Swap(a,b);
    

    2.例子

    注意:一个模板声明对应一个函数

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    template <typename T>
    inline T const& Max(T const& a, T const& b)
    {
        return a < b ? b : a;
    }
    
    int main()
    {
        int i = 39;
        int j = 20;
        cout << "Max(i,j)= " << Max(i, j) << endl;
    
        double f1 = 13.5;
        double f2 = 20.7;
        cout << "Max(f1, f2)= " << Max(f1, f2) << endl;
    
        string s1 = "Hello";
        string s2 = "World";
        cout << "Max(s1, s2)= " << Max(s1, s2) << endl;
    
        return 0;
    }

    三.类模板

    1.使用

    类模板中,根据类<>里面的具体类型来替换类模板中形参类型

    //声明
    template <class T>
    template <typename T>
    class A{
       public:
            T a;
            T b;
        T swap(T c,T& d);
     
    };
     
    //实现
    T A<T>::swap(T c,T& d){
    ...
    }
     
    
    //调用
    A<int> a;
    A<string> b;
    

    2.例子

    注意:一个模板声明对应一个类,并且要重载不同的类型

    //TestMain.h
     
    template <class T>
    class A{
     
    public:
        A();
        T g(T a,T b);
    };
     
    
    template <class T>
    A<T>::A(){
     
    }
     
    template <class T>
    T A<T>::g(T a,T b){
        return a+b;
    }
     
    int main(){
     
        A<int> a;
        std::cout<<a.g(1,2)<<std::endl;
     
        system("pause");
        return 0;
    }
    

    四.泛型编程原理

  • 相关阅读:
    React中autoComplete="off" 失效
    git配置文件—— .editorconfig
    git配置文件—— .gitattributes
    配置文件—— .travis.yml
    python入门:常用模块—sys模块
    python入门:常用模块—random模块
    python入门:常用模块—time & datetime模块
    python入门:常用模块—模块,包介绍
    Python入门:生成器&迭代器
    python入门:函数进阶(名称空间,闭包,装饰器)
  • 原文地址:https://www.cnblogs.com/k5bg/p/11118755.html
Copyright © 2011-2022 走看看