类的析构函数是否一定要定义为vietual  虚函数

类的析构函数是否一定要定义为vietual 虚函数

当一个父类的指针  指向一个子类的对象,如果父辈的析构函数没有定义为virtual  虚函数,在执行delete  释放父类指针的时候,子类的虚函数则不会调用,导致内存泄漏。

但是类的析构函数并不是一定要定义为virual!



多态:virtual 虚函数,子类重写父类虚函数

子类的虚函数表直接复制父类的虚函数表

如果子类重写了父类的某个虚函数那么就替换复制的虚函数表

如果子类增加了新的虚函数,就把虚函数添加到虚函数表的尾部