虚函数与纯虚函数
admin
2024-04-29 13:52:01
0次

1. 虚函数与纯虚函数

  • 虚函数:在类成员方法的声明(不是定义)语句前加virtual关键字,此函数就变成了虚函数。具体如下:
virtual void function set_value();...
endfunction

用途:主要用于实现多态。在父类中定义函数为虚函数,在子类中进行重写(override)该函数。当声明一个父类类指针,指向的对象为子类对象时,通过父类指针调用该虚函数时,会根据指针实际指向的对象类型选择调用子类的函数而不是父类中的函数(多态)。另外对于虚函数,子类如果不提供虚函数的实现,将会自动调用基类的缺省虚函数实现作为备选方案。

  • 纯虚函数:定义函数时添加"pure virtual"关键字,或者在虚函数后面加"=0"(C/C++),虚函数就变成了纯虚函数。纯虚函数在基类中仅给出函数声明(声明),不对虚函数实现定义(没有函数体),而是在其派生类中实现。具体如下:
//SV
pure virtual void function set_value();...
endfunction//C&C++
virtual void funtion set_value()=0;

用途:用于实现函数的多态。用在抽象类中,提供一个函数的原型(基类模板),由继承的子类实现。这相当于声明了一个函数框架,表明该抽象类必须实现哪些功能(特性),具体实现由子类中函数实现(不同子类实现方式可以不同,函数多态)。
另外:

  • 凡是包含纯虚函数的类是抽象类,抽象类只能作为派生类的基类,不能实例化成对象,但是可以做指针和引用(派生类实现该纯虚函数后,定义抽象类的指针,并指向或引用子类对象)。
  • 派生自抽象类的子类如果不提供纯虚函数的实现,编译将会失败(继承自抽象类的子类必须实现抽象类中的全部纯虚函数)。
  • 纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。如果在基类中没有保留函数的名字,则无法实现多态性。
  • 抽象类的唯一用途是为派生类提供基类,纯虚函数的作用是作为派生类中的成员函数的基础,并实现动态多态性。继承于抽象类的派生类如果不能实现基类中的所有纯虚函数,那么这个派生类也就成了抽象类。因为它继承了基类的抽象函数,只要含有纯虚函数的类就是抽象类。
  • 多态性使得程序调用的函数是在运行时动态确定的,而不是在编译时静态确定的。
  • 在定义类时添加"virtual"关键字,该类就是抽象类。
virtual class base_env;...
endclass
  • 纯虚函数是一个原型,不是一个空的虚方法。
  • 纯虚方法只能定义在虚类中,但是虚类中也可以定义非纯虚方法。

参考文档:
37331092
115384176

相关内容

热门资讯

盘点十款辅助器!清风手游辅助器... 盘点十款辅助器!清风手游辅助器AI技巧,清风手游多功能都是真的是有辅助器技巧1、任何清风手游透视是真...
科普辅助器!红豆大厅辅助器AI... 科普辅助器!红豆大厅辅助器AI脚本,红豆大厅多功能果然真的有辅助器脚本进入游戏-大厅左侧-新手福利-...
盘点一款辅助!湘中竞技辅助AI... 盘点一款辅助!湘中竞技辅助AI方法,湘中竞技多功能好像是有辅助方法湘中竞技辅助器是一种具有地方特色的...
每日必看推荐外挂!亲友潮汕麻将... 每日必看推荐外挂!亲友潮汕麻将外挂AI教程,亲友潮汕麻将多功能切实存在有外挂教程1、操作简单,无需亲...
推荐攻略透视挂!牛大亨透视挂A... 推荐攻略透视挂!牛大亨透视挂AI攻略,牛大亨多功能一直存在有透视挂攻略1、玩家可以在牛大亨透视最简单...
盘点一款作弊器!九九联盟作弊器... 盘点一款作弊器!九九联盟作弊器AIapp,九九联盟多功能总是存在有作弊器app1、完成九九联盟辅助器...
热点讨论透视挂!吉祥麻将透视挂... 热点讨论透视挂!吉祥麻将透视挂AI技巧,吉祥麻将多功能原来真的有透视挂技巧1、任何吉祥麻将透视是真的...
专业讨论开挂!来物局潮汕麻将开... 专业讨论开挂!来物局潮汕麻将开挂AI软件,来物局潮汕麻将多功能竟然真的是有开挂软件来物局潮汕麻将是不...
今日重大通报辅助器!新道游辅助... 今日重大通报辅助器!新道游辅助器AI工具,新道游多功能竟然有辅助器工具1、点击下载安装,新道游脚本分...
重大推荐透视挂!起点大厅透视挂... 重大推荐透视挂!起点大厅透视挂AI工具,起点大厅多功能果然真的是有透视挂工具1、在起点大厅插件功能辅...