• stl学习之模板


    模板是实现代码重用机制的一种工具,实质就是实现类型参数化,即把类型定义为参数。
    C++提供两种模板:函数模板,类模板。
     
    template<typename T>     //或者  template<class T>
    T my_max(T a, T b)
    {
        return a>b ? a : b;
    }
    
    template<typename T>     //或者   template<class T>
    class CMax
    {
    public:
        CMax(T a, T b)
        {
            m_a = a;
            m_b = b;
        }
        T GetMax()
        {
            return m_a > m_b ? m_a : m_b;
        }
    private:
        T m_a;
        T m_b;
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int iMax = my_max(3, 5);
        char chMax = my_max('w', 'd');
        float fMax = my_max(2.7f, 1.3f);
    
        CMax<int> maxInt(3, 5);//需要指定类型
        int iMax2 = maxInt.GetMax();
    
        CMax<char> maxChar('w', 'd');
        char chMax2 = maxChar.GetMax();
    
        CMax<float> maxFloat(2.7f, 1.3f);
        float fMax2 = maxFloat.GetMax();
    
        return 0;
    }

    可以定义多种类型的形参。
    template<typename T1, typename T2>
    class CTest
    {...};
    对象实例化时:
    CTest testA<int, float>;
    CTest testB<double, string>

    函数模板就是建立一个通用的函数,其函数返回类型和形参类型不具体指定,而是用虚拟的类型来代表。
    凡是函数体相同的函数都可以用函数模板来代替,不必定义多个函数,只需在模板中定义一次即可。
    在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。

  • 相关阅读:
    触发器trigger
    VS UFT-8 保存该文件将不会保留原始内容
    SQL SERVER 单个用户模式
    vue functional函数式组件
    一维数组转树形结构
    题解 P1081 【开车旅行】
    题解 P5022 【旅行】
    题解 P2296 【寻找道路】
    题解 P2052 【[NOI2011]道路修建】
    题解 P2342 【叠积木】
  • 原文地址:https://www.cnblogs.com/ultracpp/p/4099502.html
Copyright © 2020-2023  润新知