gpt4 book ai didi

c++ - 是否需要定义虚拟析构函数?

转载 作者:搜寻专家 更新时间:2023-10-30 23:58:07 25 4
gpt4 key购买 nike

C++ 析构函数是否需要定义为虚拟的?如果是,为什么?我读到,当将基类指针转换为派生类时,它们需要确保进行适当的清理。

最佳答案

需要一个虚拟析构函数来允许将析构函数调用动态分派(dispatch)到层次结构树中的适当类。

在您遇到的情况下:

Base *d = new Derived();
delete d;

如果没有 virtual 析构函数,您就会有未定义的行为。这是因为编译器无法为 Derived 找到最专业的析构函数,因为它没有声明为 virtual

关于c++ - 是否需要定义虚拟析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21842602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com