C++虚构造函数

存在虚析构函数,而且如果类定义了operator delete(),它就应该有虚析构函数。那是不是存在虚构造函数呢?

答案是不存在,但我们可以虚拟实现它。

要构造一个对象,构造函数必须掌握它所要创建的对象的确切类型。因此,构造函数不能是虚拟的。构造函数并不是一个普通的函数,不能有指针指向构造函数。

但有的时候我们需要虚构造函数,可以绕过上述限制。通过定义一个函数,由它调用构造函数并返回构造起来的对象。

class Expr{ public: Expr(); Expr(const Expr&); virtual Expr* new_expr(){return new Expr();} virtual Expr* clone(){return new Expr(*this);} // }; class Cond : public Expr{ public: Cond(); Cond(const Cond&); Cond* new_expr(){return new Cond();} Cond* clone(){return new Cond(*this);} // };

你可能感兴趣的:(C++,delete,Class)