首页文章正文

析构函数定义为虚函数的作用,虚函数定义

什么是虚函数 2023-12-30 23:16 906 墨鱼
什么是虚函数

析构函数定义为虚函数的作用,虚函数定义

析构函数是释放资源,避免“资源泄漏”,更加安全。对于基类和派生类的对象删除问题,虚析构函数则能够保证对象释放时总是调用“对象自己的函数”。举个例子就当我们创建的新类会被继承,我们会用到基类指针指向子类指针,我们必须使用虚析构函数。扩展:虚函数表C++的虚函数​(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的

防止内存泄漏,当父类指针指向子类对象的时候,释放父类指针,如果此时析构函数不是虚函数,那么将只会文章浏览阅读444次。虚函数是实现多态的基础,我们可以使用基类指针指向派生类对象,如果没有将基类析构函数定义为虚函数,则在释放该对象时,仅仅会调用基类的析

所以,将析构函数设为虚函数,是为了防止内存泄漏。如果存在用基类指针指向派生类对象,这样子可以使得基类和派生类的析构函数都被调用,不会造成内存泄漏。如果虚析构函数为了避免内存泄露,基类的析构函数一般都是虚函数。如果基类析构函数不是虚函数:基类指针指向子类对象,delete基类指针,调用基类析构函数,不会调用子

基类析构没有定义为virtual,而派生类(可能有多层)中有把析构定义为virtual的,此时用基类的指针指向派生类,再delete,会出错。参考Effective C++ (第7条:要将多C++的类中,构造函数用于初始化对象及相关操作,构造函数是不能声明为虚函数的,因为在执行构造函数前对象尚未完成创建,虚函数表还不存在。析构函数则用于销毁对

˙^˙ 通常,编译器处理虚函数的方法是:给每一个对象添加一个隐藏成员.隐藏成员中保存了一个指向函数地址数组的指针.这种数组称为虚函数表(virtual function table, vtbl).虚函数表中存储了1.构造函数不能为虚函数当我们将构造函数定义为虚函数时,会直接报错:首先回忆下以前学的virtual虚函数概念:如果类定义了虚函数,创建对象时,则会分配内存空

后台-插件-广告管理-内容页尾部广告(手机)

标签: 虚函数定义

发表评论

评论列表

51加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号