虚拟构造函数

Mor*_*lus 10 c++ oop polymorphism virtual constructor

我想知道虚构造函数的含义是什么以及如何使用它.

另外我知道C++不允许虚拟构造函数,我想知道为什么.

Alo*_*ave 10

虽然可以模拟行为,但C++中没有虚拟构造函数.

为什么C++中没有虚拟构造函数?
我试图给出一个推理:
标准声明在构造函数的右括号之前对象创建是不完整的.因此,对象仅在构造函数结束后存在.

虚拟关键字用于实现多态行为,其中要调用的实际函数在运行时进行评估,具体取决于this指向的实际对象类型.为了使用虚拟表机制调度构造函数,必须有一个完全存在的对象,其中有一个指向虚拟表的指针,但在构造函数内部,对象构造本身并不完整,因此如何指向虚拟表如果物体没有完全形成,是否存在?

Bjarne Stroustrup博士的推理:

为什么我们没有虚拟构造函数?


And*_*ron 10

C++不允许虚拟构造函数,因为您需要一个对象来调用虚拟方法!

术语虚拟构造函数用于成语和众所周知的设计模式.这个习语/模式涉及工厂的定义:一个具有虚拟方法的中间对象,其角色是创建有问题的对象.因为该方法是虚拟的,其目的是创建一个对象,所以它被称为"虚拟构造函数".