模板与泛型编程
- 1、概述
- (1)What(什么是模板、泛型编程)
- (2)Why
- (3)Which
- (4)模板参数
- A.What
- B.How
- C.模板参数的类型成员
- 2、模板函数
- 3、模板类
- 成员模板
- 4、模板实参推断
- 5、动态内存分配
- 6、智能指针模板
1、概述
(1)What(什么是模板、泛型编程)
模板:
模板分为函数模板和类模板,其类内部的类型和函数的形参类型不具体指定,用一个 虚拟的类型来代表,在具体使用的时候在具体化
泛型编程:
以一种独立于任何特定类型的方式编写代码,模板是泛型编程的基础
(2)Why
实现代码的重用
(3)Which
- 模板函数
- 模板类
(4)模板参数
A.What
模板参数是在 C++ 模板中使用的类型或非类型实体的占位符,分为类型模板参数和非 类型模板参数
B.How
template <typename T> T calc(const T&, const T&); //模板的声明
注意:通常一个文件所有模板的声明放在文件的开始位置
C.模板参数的类型成员
T::value_type()
必须显式地告诉编译器该名字是一个类型,且只能使用关键字 typename(而非 class)