为什么 c++ 中有虚拟析构函数而不是虚拟构造函数?

发布于 2024-12-09 10:13:57 字数 30 浏览 0 评论 0原文

为什么我们可以有虚析构函数但不能有虚构造函数?

Why can we have a virtual destructor but not virtual constructor?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜夜流光相皎洁 2024-12-16 10:13:57

构造函数链可以在编译时确定,因为您始终从尽可能最具体的类中使用new ClassName()

但是,如果您使用多态性,您可能会在可能的父类上调用析构函数,因此您在编译时无法知道从哪里开始链。您需要一个虚拟函数来始终调用正确的函数(否则您最终会在最特定的类中得到可能未清理的资源)。

The constructor chain can be determined at compile time, because you use new ClassName() always from the most specific class possible.

However you call destructors on possibly parent classes if you use polymorphism, so you can't know at compile time where to start the chain from. You need a virtual function to always call the right one (or you'd end up with potentially uncleaned resources in the most specific classes).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文