C++模板学习要点
1. 类模板
a. 方法模板
主要用于实现拷贝构造函数和赋值运算符
b. 选择性实例化
c. 类模板特化
实际上是编写模板类的例外情况, 如TClass<typename T >, 定义了一个模板类, 但是这个当T是char*时, 该模板类的定义的行为可能没有意义, 这时候需要针对当T是char*时的情况编写特化类模板。特化的目的是为用户提供统一的名字。 当用户创建TClass<int>时, 编译器用原来的模板类实例化, 当用户创建TClass<char*> 时, 编译器用特化模板TClass<char*> 实例化, 这些对用户是透明的。
全特化:
偏特化:
2.函数模板
1. 类模板
a. 方法模板
主要用于实现拷贝构造函数和赋值运算符
b. 选择性实例化
c. 类模板特化
实际上是编写模板类的例外情况, 如TClass<typename T >, 定义了一个模板类, 但是这个当T是char*时, 该模板类的定义的行为可能没有意义, 这时候需要针对当T是char*时的情况编写特化类模板。特化的目的是为用户提供统一的名字。 当用户创建TClass<int>时, 编译器用原来的模板类实例化, 当用户创建TClass<char*> 时, 编译器用特化模板TClass<char*> 实例化, 这些对用户是透明的。
全特化:
偏特化:
2.函数模板