c++ - 为什么可以使析构函数成为纯虚函数

标签 c++ destructor pure-virtual

据我所知,在cpp中,当我们删除一个对象或main完成时,所有对象的析构函数都会被调用。对于类型为子类的对象,将先调用子类的析构函数,然后调用父类的析构函数。
现在我很困惑。因为如果允许使用纯虚析构函数,那么当我们删除子类的对象时,如何调用它呢?它不是调用了纯虚类parent的析构函数吗?

最佳答案

是的,调用了基类的析构函数。这意味着它必须有一个实现。可以为任何纯虚函数提供实现,包括析构函数。例如:

struct foo
{
    virtual ~foo() = 0; // pure virtual dtor
};

foo::~foo() {} // implementation

纯虚析构函数的用例是确保没有任何其他纯虚方法的类无法实例化。

关于c++ - 为什么可以使析构函数成为纯虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476728/

相关文章:

c++ - 如何正确实现 C++ 类析构函数

c++ - 为什么调用赋值运算符会触发销毁函数?

c++ - 工厂设计模式中的纯虚函数错误

c++ - C++ 标准库中有纯虚函数吗?

c++ - <错误 C2059 : syntax error : 'constant' > when compiling with const int

c++ - Visual Studio 2010- fatal error LNK1120 : 1 unresolved externals; c++

c++ - 默认析构函数 V.S.简单定义的析构函数

c++ - 保护 CRTP 模式免受 "pure virtual"调用中的堆栈溢出

c++ - 在 Visual Studio 中使用 lex 和 yacc 输出时出现链接错误

c# - 在 C# 中转换/移植 PDWORD 代码