c++中,析构函数是必须的吗?

canminco 2009-11-27 11:55:06
c++中,析构函数是必须的吗?
...全文
905 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sduxiaoxiang 2009-11-27
  • 打赏
  • 举报
回复
不写会有默认构造函数
不过不做啥事
arong1234 2009-11-27
  • 打赏
  • 举报
回复
能提高效率?
[Quote=引用 10 楼 lgf2002 的回复:]
补充一下,在恰当的时候省略构造函数,析构函数可以提高程序的效率,不是没有任何好处,问题就在于是否能正确地运用
[/Quote]
lgf2002 2009-11-27
  • 打赏
  • 举报
回复
补充一下,在恰当的时候省略构造函数,析构函数可以提高程序的效率,不是没有任何好处,问题就在于是否能正确地运用
lgf2002 2009-11-27
  • 打赏
  • 举报
回复
不是在任何情况下,编译器都会自动合成析构函数,我觉得这要看它有没有自动合成构造函数,而构造函数也不是在用户没有提供构造函数的任何情况下都自动合成,有的时候它根本就不需要,是trivial的,至于什么情况不会自动合成,也不是几句话就能说清楚的,慢慢学吧
风消云散Fly 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 loveour 的回复:]
构造和析构,说到底如果涉及的类需要去初始化,需要释放资源,等等需要做的事情,那么才是必须的。关键是看看要做什么工作,如果也自己写了析构函数,但是需要释放的资源仍然没有释放,那么写了何益?

所以,要看自己应该做的工作是否都完成了,这才是关键。

有析构函数,代码会比较清晰。省略没什么好处,除了无用的省掉几行代码...
[/Quote]
恩,说的对....
loveour 2009-11-27
  • 打赏
  • 举报
回复
构造和析构,说到底如果涉及的类需要去初始化,需要释放资源,等等需要做的事情,那么才是必须的。关键是看看要做什么工作,如果也自己写了析构函数,但是需要释放的资源仍然没有释放,那么写了何益?

所以,要看自己应该做的工作是否都完成了,这才是关键。

有析构函数,代码会比较清晰。省略没什么好处,除了无用的省掉几行代码...
VeiwoZouhui 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 canminco 的回复:]
哦 也就是和构造函数一样是吗
[/Quote]

可以这样理解
canminco 2009-11-27
  • 打赏
  • 举报
回复
哦 也就是和构造函数一样是吗
arong1234 2009-11-27
  • 打赏
  • 举报
回复
只要你的类没有分配、占有任何资源,就不是必须的
虽然不是必须的,但是有什么特别理由不提供呢?提供一个我个人觉得风格更好,没有必要为这种事情还有省几行代码,还要到处确认。

不建议依赖编译器的缺省提供的构造、析构函数的行为,如果你能控制,尽量自己控制
misssdf 2009-11-27
  • 打赏
  • 举报
回复
楼上说的对。
stardust20 2009-11-27
  • 打赏
  • 举报
回复
嗯,如果你没写的话系统会默认为你添加一个,只不过有时候系统默认的不能达到我们想要的效果,如释放我们new的内存
VeiwoZouhui 2009-11-27
  • 打赏
  • 举报
回复
你不是必须要写析构函数.
对象生成期结束的时候,在没有析构函数的情况下,会调默认析构函数.

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧