在 C++ 中,类的成员函数(包括其析构函数)都可以声明为虚函数,唯独一个例外 —— 构造函数。没有虚函数时,调用成员函数的对象的具体类型在编译时就已经确定。在调用构造函数的那一刻,所要构造的对象类型也总是在编译时已知的。然而,我们需要构造那些类型直到运行时才能确定的对象。本章将介绍几种相关的模式和惯用法,以不同的方式解决这一设计问题,其中包括工厂模式。
本章将涵盖以下主题:
为什么无法将构造函数声明为虚函数
如何使用工厂模式将所构造对象类型的决策延迟到编译时
使用 C++ 惯用法以多态方式构造和复制对象