若子类继承基类,两者析构函数不加virtual关键字,此时调用函数 参数为基类指针指向子类对象 删除对象,那么只会执行基类构造函数,此时对于编译器而言,你传进去的基类指针,在函数体已经静态编译好为基类的构造函数。
如果在基类的析构函数前加上virtual关键字,此时对于子类的析构函数,也会自动加上virtual关键字,从而加入到虚函数表中,再调用上面的函数,会首先寻找调用子类的析构函数,此时在子类的析构函数最后面,编译器会自动执行基类的析构函数
若子类继承基类,两者析构函数不加virtual关键字,此时调用函数 参数为基类指针指向子类对象 删除对象,那么只会执行基类构造函数,此时对于编译器而言,你传进去的基类指针,在函数体已经静态编译好为基类的构造函数。
如果在基类的析构函数前加上virtual关键字,此时对于子类的析构函数,也会自动加上virtual关键字,从而加入到虚函数表中,再调用上面的函数,会首先寻找调用子类的析构函数,此时在子类的析构函数最后面,编译器会自动执行基类的析构函数
Title:虚析构函数
Created:2023-07-14, 10:05:22
Updated:2023-07-14, 10:22:27
Full URL:https://zkrun.github.io/2023/07/14/%E8%99%9A%E6%9E%90%E6%9E%84%E5%87%BD%E6%95%B0/
License: "CC BY-NC-SA 4.0" Keep Link & Author if Distribute.