为什么定义析构函数为虚函数的时候,用基类指针指向派生类对象,在析构的时候,会先调用派生类的析构函数,然后派生类自动调用基类的析构函数
但是将普通的基类成员函数定义为虚函数,派生类调用该函数后,不会自动调用基类的该函数?
为什么定义析构函数为虚函数的时候,用基类指针指向派生类对象,在析构的时候,会先调用派生类的析构函数,然后派生类自动调用基类的析构函数
但是将普通的基类成员函数定义为虚函数,派生类调用该函数后,不会自动调用基类的该函数?
“但是将普通的基类成员函数定义为虚函数,派生类调用该函数后,不会自动调用基类的该函数?”如果派生类调用该函数后自动调用基类的该函数,那多态的意义就没有。析构函数先调用派生类再调用基类,这个具体原理我不清楚,可能是C++标准规范里设计如此。这样可以防止内存泄漏,如果析构函数指调用了派生类的,基类的没有调用,那基类里面定义的一些对象可能会没有释放。一般析构函数是用来释放内存或者资源的。