C++
本文最后更新于157 天前,其中的信息可能已经过时,如有错误请发送邮件到2067965693@qq.com

虚析构函数~

虚析构函数的核心作用:

当一个类作为基类,且可能通过基类指针 / 引用操作派生类对象时,虚析构函数能保证:

删除基类指针时,会先调用派生类的析构函数,再调用基类的析构函数,从而正确释放派生类中可能分配的资源(避免内存泄漏)。

为什么需要虚析构函数?

如果基类的析构函数不是虚函数,当用基类指针指向派生类对象并删除时,只会调用基类的析构函数,而派生类的析构函数不会被执行。这会导致派生类中动态分配的内存(如 new 出来的资源)无法释放,造成内存泄漏。

例如:

class Base {
public:
    ~Base() { /* 基类清理 */ } // 非虚析构函数
};

class Derived : public Base {
public:
    ~Derived() { /* 派生类清理(如释放动态内存) */ }
};

// 问题场景:通过基类指针删除派生类对象
Base* ptr = new Derived(); 
delete ptr; // 仅调用 Base 的析构函数,Derived 的析构函数不执行 → 内存泄漏

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇