学习C++第二十一课--模版概念与函数模版的定义、调用笔记

一、模板概念

泛型编程是以独立于任何特定类型的方式编写代码。使用泛型编程时,需要提供具体程序实例所操作的类型或者值。

模板是泛型编程的基础。模板是创建类或者函数的蓝图或者公式。通过给这些蓝图或者公式提供足够的信息,让这些蓝图或者公式真正地转变为具体的类或者函数,这种转变发生在编译时。

模板支持将类型作为参数的程序设计方式,从而实现了对泛型程序设计的直接支持。也就是说,C++模板机制允许在定义类、函数时将类型作为参数。

模板一般分为函数模板和类模板。

函数模板的定义并不会导致编译器生成相关代码,只有调用这个函数模板时,编译器才会实例化一个特定版本的函数并生成函数相关代码。编译器生成代码的时候,需要能够找到函数模板的函数体部分,所以函数模板的定义通常都是在.h头文件中。

函数模板中,有时需要提供模板参数,有时编译器自己推断模板参数。

二、模板定义和调用

//模板一:两个参数都是同一种类型,比如两个参数可以同时为double或者int类型
template <typename T>
T addFunc(T num1,T num2)
{
    T addSum = num1 + num2;
    return addSum;
}

//模板二:非类型模板,参数需为int常量
template <int num1, int num2>
int addFunc()
{
    return (num1 + num2);
}

//模板三:非类型模版,两个参数,前一个无法确定类型(根据参数类型判断),第二个参数是int型常量
template <typename T,int num2>
double addFunc(T num1)
{
    double addSum = num1 + num2;
    return addSum;
}

//模板四:非类型模板
template <unsigned L1, unsigned L2>
int charscomp(char const (&p1)[L1],char const (&p2)[L2])
{
    return strcmp(p1,p2);
}

int main()
{
    int intA = 10, intB = 20,intTmp;
    double floatA = 15.0, floatB=18.0,floatTmp;
    int result;

    intTmp   = addFunc(intA,intB);      //模板一:两个参数类型是一致的
    floatTmp = addFunc(floatA, floatB); //模板一:两个参数类型是一致的
    intTmp   = addFunc(10,20);          //模板二
    floatTmp = addFunc<double,10>(23.0);//模板三
    result   = charscomp("111!","111!");//模板四

    cout << result << endl;
    return 0;
}

2022.08.11结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值