C++ 模板简介

1.泛型编程

-编写与类型无关的同用代码,是代码复用的一种手段,模板是泛型编程的基础。

2. 函数模板

#include<iostream>

using namespace std;

template<class T>   //  template<typename T>    //  模板参数列表

void Swap(T& x1,T&x2)   //  函数参数列表
{
    int tmp = x1;
    x1 = x2;
    x2 = tmp;
}


int main()
{
    int a = 10;
    int b = 20;
    Swap(a, b);
    cout << a << b << endl;
}

         template <class T> 
        template <typename T>

在编译器调用时 ,模板实例化,得到需要的函数。 

传给函数的参数不同类型 ,则实例化失败。


 我们可以选择 使用  显示实例化
 

template <class T>

T Add(T x1, T x2)
{
    return x1 + x2;
 }
int main()
{
    int a = 20;
    double b = 1.1;
    cout << Add<int>(a, b)<<endl;
    cout << Add<double>(a, b);
}

<类型>

函数模板和普通函数同时出现时,优先普通函数。

3. 类模板

    与函数模板相似。    使用template<class T>

不同的是,由于类和函数不同,不存在形参实参,
所以我们在使用类模板时,使用显示实例化。

template <class T>
class Stack
{
public:
    Stack(int capacity = 4)
        :_top(0)
        , _capacity(capacity)
    {
        _a = new T[capacity];
    }


    ~Stack()
    {
        delete[] _a;
        _a = nullptr;
        _capacity = _top = 0;
    }

    void push(const T& x);

private:
    T* _a;
    int _capacity;
    int _top;

};

template <class T>  //调用时,必须使用这个格式
void Stack<T>::push(const T& x)
{

}

int main()
{
    Stack<int> s1;   //  显示实例化
    Stack<double>s2;
    return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值