C++——模板

一,函数模板

//某个函数对所有数据类型都将进行相同的处理时,使用模板


#include<iostream>
#include<string>
using namespace std;

template <class T>
void swapp(T &a,T &b)
{ 
    T temp;
    temp=a;
    a=b;
    b=temp;
}

void main()
{
    int a1=10,b1=20;
    cout<<"交换前a1="<<a1<<",b1="<<b1<<endl;
    swapp(a1,b1);
    cout<<"交换后a1="<<a1<<",b1="<<b1<<endl;
    cout<<endl<<endl;

    string a2="fish",b2="turtle";
    cout<<"交换前a2="<<a2<<",b2="<<b2<<endl;
    swapp(a2,b2);
    cout<<"交换后a2="<<a2<<",b2="<<b2<<endl;
}

这里写图片描述

二,类模板

#include<iostream>
#include<string>
using namespace std;

template <class T>
class Stack
{
private:
    int size;
    int sp;
    T *data;

public:
    Stack(int size);//传统的方式,声明和定义分开
    ~Stack(){delete []data;}
    void push(T value);
    T pop(){return data[--sp];}//内联的方式,将定义部分写入内部
};//类模板

template <class T>
Stack<T>::Stack(int size)
{
    this->size=size;//this指针指向当前类生成的对象,所以左边为类的属性,右边为形参
    data=new T[size];
    sp=0;
}

template <class T>
void Stack<T>::push(T value)
{
    data[sp++]=value;
}

void main()
{
    Stack<int> intStack(100);

    intStack.push(1);
    intStack.push(2);
    intStack.push(3);

    cout<<intStack.pop()<<endl;
    cout<<intStack.pop()<<endl;
    cout<<intStack.pop()<<endl;
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值