You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++:栈分配对象是否需要虚析构函数?

关于当前C++程序是否需要虚析构函数的解答

结论:当前场景下不需要显式添加虚析构函数,具体原因如下:

  • 你的代码中所有对象都是栈分配的,当对象离开作用域时,编译器会自动按正确顺序调用析构函数:栈上的Rectangle对象会先调用自身默认生成的析构函数,再调用基类Shape2D的析构函数,不会出现析构不全或内存泄漏的问题。
  • 虚析构函数的核心作用是解决通过基类指针delete堆上分配的派生对象时的析构不全问题。你的代码既没有用new分配堆对象,也没有通过基类指针执行delete操作,完全触发不了需要虚析构的场景。

补充建议

如果后续你需要扩展代码,比如用基类指针管理堆上的派生对象,建议提前给基类Shape2D添加虚析构函数。因为基类已经包含虚函数(getArea),按照C++最佳实践,含有虚函数的类通常都应该声明虚析构函数,避免后续扩展时踩坑。

内容的提问来源于stack exchange,提问作者First User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:25:27