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;
        //……
    }

    什么是模板函数

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

  • 相关阅读:
    AngularJS学习之旅—AngularJS 服务(八)
    Svchost进程和共享服务病毒原理
    服务劫持
    利用BHO实现浏览器劫持
    动态反调试
    常用的静态反调试技术及其规避方法
    teb, peb,seh 结构
    线程本地存储tls
    注入技术总结
    注入技术--远程线程注入
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4181521.html
Copyright © 2011-2022 走看看