- 原因有多种,但最简单的原因是内存必须按 sizeof(T) 的大小进行分配,其中 T 是实际的对象类型,而 sizeof() 操作符是 constexpr(编译时常量)。
- 工厂模式是一种创建型模式,用于解决在不显式指定对象类型的情况下创建对象的问题。
- 尽管在 C++ 中实际类型必须在构造点指定,但工厂模式允许将构造点与程序决定创建何种对象,并使用某种替代标识符(如数字、值或另一种类型)来识别类型的地点分离开来。
- 虚复制构造函数是一种特殊类型的工厂,其中要构造的对象由我们已有的另一个对象的类型来确定。典型的实现方式是在每个派生类中重写一个虚 clone() 方法。
- 模板方法模式描述了一种设计,其中整体的控制流程由基类决定,而派生类在某些预定义的点上提供自定义实现。例子中,整体控制流程是工厂构造,而自定义的点就是对象的构造行为(内存分配和构造函数调用)。
- 当需要(或更方便)将对象的构造工作委托给另一个类,而不是在构造函数中完成全部初始化时,会使用构建者模式。一个根据某些运行时信息,使用工厂方法构造不同类型对象的类也是一种构建者。除了工厂本身之外,这样的构建者或工厂类通常还拥有其他用于构造对象的运行时数据,这些数据必须存储在另一个对象中 —— 例子中,就是工厂对象,同时也是构建者对象。