存在虚析构函数,而且如果类定义了operator delete(),它就应该有虚析构函数。那是不是存在虚构造函数呢?
答案是不存在,但我们可以虚拟实现它。
要构造一个对象,构造函数必须掌握它所要创建的对象的确切类型。因此,构造函数不能是虚拟的。构造函数并不是一个普通的函数,不能有指针指向构造函数。
但有的时候我们需要虚构造函数,可以绕过上述限制。通过定义一个函数,由它调用构造函数并返回构造起来的对象。
存在虚析构函数,而且如果类定义了operator delete(),它就应该有虚析构函数。那是不是存在虚构造函数呢?
答案是不存在,但我们可以虚拟实现它。
要构造一个对象,构造函数必须掌握它所要创建的对象的确切类型。因此,构造函数不能是虚拟的。构造函数并不是一个普通的函数,不能有指针指向构造函数。
但有的时候我们需要虚构造函数,可以绕过上述限制。通过定义一个函数,由它调用构造函数并返回构造起来的对象。