在本章中,我们学习了一种非常具有 C++ 特色的模式,最初是为了应对早期有缺陷的 C++ 编译器而提出的变通方法,但多年后又找到了新的用途。友元工厂用于从类模板的实例化中生成非模板函数。作为非模板函数,这些生成的友元函数在参数转换方面比模板函数具有更灵活的规则。我们还了解到,参数依赖查找、类型转换和友元工厂如何协同工作,通过一个远非直观的过程,最终产生看起来非常自然的结果。
下一章将介绍一种完全不同类型的工厂 —— 一种基于经典工厂模式的 C++ 模式,解决了语言中的一种特定不对称性:所有的成员函数,甚至析构函数,都可以是虚函数,唯独构造函数不行。