C 有虚拟构造函数吗?
与其他语言不同,C 没有提供虚拟构造函数。这就提出了一个问题:为什么不呢?
造物主本人的回答
C 之父 Bjarne Stroustrup 给出了深刻的解释:
“虚拟调用是一种在给定部分信息的情况下完成工作的机制。[...]要创建对象,您需要完整的信息。[...]因此,对构造函数的调用不能是虚拟的。”
理解概念
本质上,虚拟函数允许动态绑定,使代码能够与不同类型的对象交互不知道他们的确切班级。然而,对象的创建需要有关要实例化的类型的精确信息,这使得虚拟构造函数在概念上是不可能的。
替代方法
尽管没有虚拟构造函数,C 提供了替代方法来实现类似的功能。 Stroustrup 的常见问题解答条目提供了此类解决方案的代码,演示了如何在没有虚拟构造函数的情况下完成所需的行为。
以上是为什么C没有虚拟构造函数?的详细内容。更多信息请关注PHP中文网其他相关文章!