第三章:算法概述

3.5.1 模板语法

模板函数的模型和实现从一个模板参数表开始。其语法包括关键字template,后面紧跟用角扩号括起来的形式类型的非空表在这个参数表中,每种类型前面都有关键字typename , 不同的类型之间用逗号隔开。

//一个模板类型的参数表

template

//多个模板类型的参数表

template

尽管不是必须的,但C++程序员通常使用T表示模板参数中的类型。当程序使用模板函数时,编译器会把T与实际的C++类型联系起来,如整形或字符型,或者程序员自定义的类型,然后,用指定的C++类型替换T 。

除了初始模板参数表之外,模板函数的声明和实现遵循函数编码的标准规则。程序员可以为函数中的函数参数、返回类型和局部对象的声明使用模板类型。同时,两个重要的限制:1.函数参数表中至少一个参数为模板类型T 。 2.函数体中的C++语句可以使用类型T对象,但只能使用对应于类型T的实际类型有效的操作。例如,某个程序可能不能对矩形使用包含 <运算符的模板函数,因为矩形没有定义这个操作。>

template

returntype funcname(T arg,…)

{

//C++语句可以使用类型T,但仅用于对T有效的操作

}

3.5.2 运行时模板扩展

当编译器发现某个语句调用模板函数时,就确定调用参数的类型,并用指定的类型生成函数代码的实例。

当编译器调用模板函数时,必须能够明确地判断类型T , 如果编译器判断T为两个或多个可能的类型,则输出错误信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值