假设有基类 A, 继承类 B,基类A的析构函数不为虚函数,代码实例如下:
执行代码 delete pb,执行结果为:
执行代码 delete pa,执行结果为:
如果基类 A的析构函数为 虚函数,代码为:
执行 delete pb,结果为:
执行 delete pa,结果为:
可见,当使用基类指针指向继承类对象时,只有基类的析构函数为虚函数时,才能通过基类指针删除继承类对象,释放掉继承类所占用的内存空间。
至于为什么必须是虚函数?不是很理解,欢迎补充!

本文深入探讨了在C++中,当使用基类指针指向继承类对象时,仅当基类的析构函数为虚函数时,才能通过基类指针正确删除继承类对象并释放内存空间的原理。解释了虚函数在此过程中的关键作用,并通过代码实例进行说明。
1181

被折叠的 条评论
为什么被折叠?



