我们知道构造函数有一个必须遵守的规则,即构造函数不能定义为虚函数。但有一个具体的应用是要求是在不同的场景下通过一个指针或者引用生成不同的对象,这类似于类型的动态生成,即在执行期才能确定具体的对象。这怎么实现呢? 下面我们介绍两种方法: 1、不管是在effective c++ 还是在设计模式中,提到的一种特别的替代继承的方法,即组合。采用组合的方法来实现构造函数虚化的功能。具体实现方式为: class base { //抽象基类,其中至少含有一个纯虚函数,但其构造函数非虚 public: .... };