gpt4 book ai didi

c++ - 即使有虚函数也不需要虚析构函数,为什么?

转载 作者:太空狗 更新时间:2023-10-29 23:22:38 25 4
gpt4 key购买 nike

它说如果有一个虚函数,最好有一个虚析构函数。但是,如果对象是在栈上而不是在堆上创建的,还需要这样做吗?

问候,

最佳答案

严格来说不需要 - 仅当对象将通过指向基对象的引用的指针销毁时才需要虚拟析构函数。

如果销毁时的静态类型是对象的实际类型,那么无论它是否是虚拟的,都会调用正确的 dtor。

但是如果一个类有虚函数,其原因通常是可以通过指针或对其中一个对象基的引用来访问它。如果要通过该机制销毁对象,那么拥有一个虚拟 dtor 将确保调用正确的对象。如果你有一个虚函数,让 dtor 虚拟化几乎是免费的。

关于c++ - 即使有虚函数也不需要虚析构函数,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2480632/

25 4 0
文章推荐: c++ - 如何在 C/C++ 中读取未知维度的数据文件
文章推荐: c# - 我可以使用泛型作为 key 吗?
文章推荐: c# - 删除 List 的重复对