多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码
解决方式:将父类中的析构函数改为**虚析构**或者**纯虚析构**
虚析构和纯虚析构共性:
* 可以解决父类指针释放子类对象
* 都需要有具体的函数实现
虚析构和纯虚析构区别:
* 如果是纯虚析构,该类属于抽象类,无法实例化对象
虚析构语法:
`virtual ~类名(){}`
纯虚析构语法:
` virtual ~类名() = 0;`
`类名::~类名(){}`
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码
解决方式:将父类中的析构函数改为**虚析构**或者**纯虚析构**
虚析构和纯虚析构共性:
* 可以解决父类指针释放子类对象
* 都需要有具体的函数实现
虚析构和纯虚析构区别:
* 如果是纯虚析构,该类属于抽象类,无法实例化对象
虚析构语法:
`virtual ~类名(){}`
纯虚析构语法:
` virtual ~类名() = 0;`
`类名::~类名(){}`
虚析构的诞生原因:当父类指针指向子类的时候,如果父类不写成虚析构,子类的析
<br />一. 虚析构函数<br />我们知道,为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数。因为在delete一个抽象类指针时候
疑问:如何利用一个循环结构,依次处理同一个类族中不同类的对象?如何解决这个
简单的来说,虚函数的作用是当基类调用派生类的对象时,能够实现多态,即虚函数会优先调用派生类的对应函数。那么虚析构
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M