在C++中有这么一句话描述虚析构函数:
当通过基类的指针去删除派生类的对象,而基类又没有虚析构函数时,结果将是不可确定的。
纠结了半天看文字还是有一些不确定和不明白,在网上搜集了一点资料与大家共勉。
析构函数是释放资源,避免“资源泄漏”,更加安全。
对于基类和派生类的对象删除问题,虚析构函数则能够保证对象释放时总是调用“对象自己的函数”。
举个例子就清楚了,比如:
当通过基类的指针去删除派生类的对象,而基类又没有虚析构函数时,结果将是不可确定的。
纠结了半天看文字还是有一些不确定和不明白,在网上搜集了一点资料与大家共勉。
析构函数是释放资源,避免“资源泄漏”,更加安全。
对于基类和派生类的对象删除问题,虚析构函数则能够保证对象释放时总是调用“对象自己的函数”。
举个例子就清楚了,比如:
- Class A
- {
-
…… -
Virtual ~A(){ -
printf(“A::~A()”); -
} -
…… - }
- Class B:public A
- {