《C++Primer》 3.19 模板与泛型编程

函数模板是一个独立于类型的函数,可作为一种方式,产生函数的特定类型版本。

在函数模板形参表中,关键字typename和class具有相同涵义。使用typename更为直观。

如果要在模板内部定义指定类型,可以在成员名前加上关键字typename

模板形参不必都是类型。在调用函数时非类型形参将用值代替,值的类型在模板形参表中指定。

编写泛型代码的两个重要原则:

1.模板的形参是const引用

2.函数体中的测试只用<比较

编译模板时,编译器可能会在三个阶段中标识错误:

1.编译模板定义本身时,语法错误

2.编译器见到模板的使用时

3.实例化的时候,发现类型相关的错误

类模板总是包含模板实参

从函数实参确定模板实参的类型和值的过程叫做模板实参推断。必须保证所有实参类型完全匹配,编译器为了匹配实参只能执行的受限转换:const转换、数组或函数到指针的转换。

当不能推断模板实参类型的时候,有必要覆盖模板实参推断机制,并显式指定为模板形参所用的类型或值。

包含编译模型:编译器必须看到用到的所有模板的定义。include

分别编译模型:编译器会为我们跟踪相关的模板定义。export

非类型形参的模板实参必须是编译时常量表达式。

泛型句柄类提供类似指针的操作:复制句柄对象将不会复制基础对象,复制之后,两个句柄对象将引用同一基础对象。

模板特化是指该定义中一个或多个模板形参的实际类型或实际值是指定的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值