社区
C++ 语言
帖子详情
c++中,析构函数是必须的吗?
canminco
2009-11-27 11:55:06
c++中,析构函数是必须的吗?
...全文
905
12
打赏
收藏
c++中,析构函数是必须的吗?
c++中,析构函数是必须的吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
你不是必须要写析构函数.
对象生成期结束的时候,在没有析构函数的情况下,会调默认析构函数.
《当
析构函数
遇到多线程》PPT
这是陈硕在 2009 年上海
C++
技术大会演讲《当
析构函数
遇到多线程》的 PPT 投影片,可自由用于个人学习,其他使用需得到作者许可。 简介:编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种 race condition 是
C++
多线程编程面临的基本问题,可以借助 tr1
中
的 shared_ptr 和 weak_ptr 完美解决。这也是实现线程安全的 Observer 模式的必备技术。
C++
默认的
析构函数
不是虚函数?
析构函数
必须
是虚函数?
虚
析构函数
:基类指针指向子类对象,用基类指针删除子类对象 纯虚
析构函数
:需要类内声明,类外实现,含之抽象类,不可实例化
C++
默认的
析构函数
不是虚函数?
析构函数
必须
是虚函数?
C++
默认的
析构函数
不是虚函数目的:节省内存 虚函数需要额外的虚函数表和虚表指针,占用额外的内存。对于不会被继承的类来说,将析构设置成虚函数会浪费内存。只有需要当作父类时,设置成虚函数
析构函数
必须
是虚函数:防止内存泄漏 当一个类作为父类,需要被继承,才把它的
析构函数
设置为虚函数, 子类有开辟到堆区的属性,父类指针走不到子类的
析构函数
为什么父类的
析构函数
必须
是虚函数,而
C++
默认的
析构函数
不是虚函数?
为什么父类的
析构函数
必须
是虚函数,而
C++
默认的
析构函数
不是虚函数? 因为当我们用基类指针指向new出来的子类时,根据动态绑定可以确保子类新添加的部分也可以被顺利释放掉,以防出现内存泄漏。 而默认的
析构函数
不是虚函数的原因是因为:虚函数需要额外的虚函数表和虚表指针,会占用格外内存,对于不会有子类的类来说,这个是没有必要的。 虚函数和虚表指针:https://blog.twofei.com/496/ ...
【002 函数】虚函数、
析构函数
,为什么
析构函数
必须
是虚函数?
C++
默认的
析构函数
不是虚函数?
C++
默认的
析构函数
不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。而对于不会被继承的类来说,其
析构函数
如果是虚函数,就会浪费内存。因此
C++
默认的
析构函数
不是虚函数,而是只有当需要当作父类时,设置为虚函数。将可能会被继承的父类的
析构函数
设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。
哪类
析构函数
必须
是虚函数,为什么?为什么
C++
默认的
析构函数
不是虚函数?
将可能会被继承的父类的
析构函数
设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。
C++
默认的
析构函数
不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。而对于不会被继承的类来说,其
析构函数
如果是虚函数,就会浪费内存。因此
C++
默认的
析构函数
不是虚函数,而是只有当需要当作父类时,设置为虚函数。 ...
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章