C++学习之-析构函数必须为虚函数吗?
今天讨论个比较有意思的话题:析构函数是不是必须要为虚函数?
先说答案:
析构函数可以是虚函数,也可以不是虚函数。
再说原因:
析构函数为虚函数的情况:继承
当父类指针释放子类对象时,如果父类的析构函数不是虚函数,子类的析构函数可能调不到(指针类型是父类,所以直接调用父类的析构函数),从而导致内存泄漏,这类代码实在太简单,这里就不再贴实例代码了。
既然这样,是不是C++默认的析构函数设计成虚函数更合适?答案是否定的,大家都知道,虚函数需要额外的虚函数表和虚表指针,占用额外的内存,如果类的设计不考虑继承,把析构函数设置成虚函数无疑是浪费内存。
总结下:将基类的析构函数声明为虚函数..
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-05-18 公网可用的RTMP、RTSP测试地址(更新于2021年3月)
2021-05-18 rtmp/rtsp/hls公网真正可用的测试地址
2021-05-18 Windows平台RTMP|RTSP播放器实现画面全屏功能
2021-05-18 Windows平台RTMP|RTSP播放器为什么要兼容GDI绘制
2021-05-18 Windows平台RTMP推送|轻量级RTSP服务实现本地摄像头|屏幕|叠加数据预览
2021-05-18 Android对接实现内网无纸化会议|智慧教室|实时同屏功能
2021-05-18 QT实现低延迟的RTSP、RTMP播放器