c++ primer 16章 模板与泛型编程

函数模板

模板参数表示在类或函数定义中用到的类型或值,编译器使用实参的类型来确定绑定到模板参数的类型,编译器用推断出的模板参数来为我们实例化一个特定版本的函数

类型参数

类型参数可以用来指定 返回类型函数的参数类型,以及在函数体内用于变量声明类型转换
类型参数前必须使用关键字class或typename,这两个字含义相同,可以互换使用。

非类型参数

使用特定的类型名而非关键字来指定非类型参数。
非类型模板参数的模板实参必须是常量表达式。

函数模板可以声明为inline或constexpr的,说明符放在模板实参列表之后,返回类型之前。

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

  1. 模板中的函数参数是const的引用
  2. 函数体中的条件判断仅使用<比较运算

模板程序经该尽量减少对实参类型的要求

函数模板和类模板成员的定义通常放在头文件中

类模板

与函数模板不同的是,编译器不能为类模板推断模板参数类型

定义类模板
实例化类模板

一个类模板的每个实例都形成一个独立的类

在模板作用域中引用模板类型

类模板的成员参数
定义在类模板内的成员函数被隐式的命名为内联函数

check和元素访问成员

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值