『C++&C语言』C++模板(template)的定义

『C++&C 语言』C++模板(template)的定义

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

『C++&C语言』C++模板(template)的定义
https://chiamzhang.github.io/2024/06/29/『C++&C语言』C++模板(template)的定义/
Author
Chiam
Posted on
June 29, 2024
Licensed under