前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 模板(template) 的定义

C++ 模板(template) 的定义

作者头像
风骨散人Chiam
发布2020-10-28 11:30:51
1.5K0
发布2020-10-28 11:30:51
举报
文章被收录于专栏:CSDN旧文

定义:

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

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

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

先举个函数模板的栗子:

  写一个求和函数:

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档