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

函数模板

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

类型参数

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

非类型参数

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

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

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

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

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

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

类模板

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

定义类模板
实例化类模板

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

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

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

check和元素访问成员

你可能感兴趣的:(c++)