zoukankan      html  css  js  c++  java
  • C++ template

    在模板定义语法中关键字class与typename的作用完全一样。

    什么是类模板

     如果一个类中数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板

    类模板定义

    Step1: 声明模板

    三种声明形式:
    1。基本模板类
    template<class T1,class T2>
    2。带默认类型形参
    template<typename T3, typename T4=int>
    3。带非类型模板参数
    template<class T5,int a> 

    Step2: 定义类

    template<class T>
    class Test{
    private:
        T n;
        const T i;
        static T cnt;
    public:
        Test():i(0){}
        Test(T k);
        ~Test(){}
        void print();
        T operator+(T x);
    };

    Step3: 在类定义体外定义成员函数时,若此成员函数中有模板参数存在,则还需在函数体外进行模板声明,并在函数名前的类名后缀加上“<T>”

    template<class T>
    Test<T>::Test(T k):i(k){n=k;cnt++;}
    
    template<class T>
    T Test<T>::operator+(T x){
           return n + x; 
    }

    Step4:  在类定义体外初始化const成员和static成员变量,需再对模板进行声明

    template<class T>
    int Test<T>::cnt=0;

    什么是模板类

    模板类是类模板实例化后的一个产物。

    什么是函数模板

    template<typename(或class) T>
    T fuc(T x, T y)
    {
        T x;
        //……
    }

    什么是模板函数

    模板函数的生成就是将函数模板的类型形参实例化的过程

  • 相关阅读:
    Socket
    字符串,byte,字典转换整理
    1-嵌入式面试题库
    10-FreeRTOS 队列
    9-FreeRTOS API获取任务使用CPU时间
    7-代码区 | 常量区 | 静态区(全局区) | 堆区 | 栈区
    8-FreeRTOS任务API
    7-FreeRTOS时间片进行任务调度
    6-C指针
    用Union体测试处理器大小端
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4181521.html
Copyright © 2011-2022 走看看