zoukankan      html  css  js  c++  java
  • C++ 模板(template) 的定义

    定义:

    模板(template)是实现代码重用机制的一种工具,它可以实现类型参数化,把类型定义为参数(模板元编程),从而实现了真正的代码可重用性。

    模板是用来批量生成功能和形式都几乎相同的代码的。编译器就能在需要的时候,根据模板自动生成程序的代码。从同一个模板自动生成的代码,形式几乎是一样的。 模板就像一个做饼干的模具,至于饼干是什么味道,则要看具体实例化时制作饼干的材料。

    模板可以分为两类,一个是函数模板,另外一个是类模板。

    先举个函数模板的栗子:

      写一个求和函数:

    template<typename T>
    int sum(T a, T b) {
        return a>b;
    }
    //也可写成template<class T> T是模板类型的名称,可以apple可以是ABC <class apple>
    sum(15,16); // 这种不申明类型的写法也是允许的
    sum<int>(1, 2); 
    sum<float>(1.0, 2.0);
    sum<long long >(1,2);

    再举个类模板的例子:

    写一个stack

    template <class T> class Stack {
        public:
            Stack();
            ~Stack();
            void push(T t);
            T pop();
            bool isEmpty();
        private:
            T *m_pT;        
            int m_maxSize;
            int m_size;
    };
    template <class  T>  
    Stack<T>::Stack(){
       m_maxSize = 100;      
       m_size = 0;
       m_pT = new T[m_maxSize];
    }
    template <class T>  
    Stack<T>::~Stack() {
       delete [] m_pT ;
    }
            
    template <class T> 
    void Stack<T>::push(T t) {
        m_size++;
        m_pT[m_size - 1] = t;
        
    }
    template <class T> 
    T Stack<T>::pop() {
        T t = m_pT[m_size - 1];
        m_size--;
        return t;
    }
    template <class T> 
    bool Stack<T>::isEmpty() {
        return m_size == 0;
    }
  • 相关阅读:
    jQ的工具类方法
    jq-ajax
    jq-ajax-get
    LOAD
    JQ的尺寸类
    JQ-DOM与元素的操作
    jQ-DOM属性的操作
    jQ的事件
    3位创业公司CEO亲述:200人的小公司,这么做数据管理就对了
    十二潜意识的智商
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12798619.html
Copyright © 2011-2022 走看看