虚函数与纯虚函数
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

相关内容

热门资讯

两只大牛股,紧急发声:不属实!... 5天3板超声电子:“超声电子高频板通过英伟达认证”情况不属实,目前无产品供货给英伟达9月13日晚间,...
科创板创新药企BD授权交易总额... 2026年半年度财报季已收官,在创新药企业以业绩扭亏和BD兑现吸引市场目光的同时,以CXO为代表的上...
蔚来李斌1-8月交付增近58%... 9月9日消息,上海蔚来汽车有限公司副总裁品牌与传播资深专家马麟在微博透露,9月8日下午,蔚来创始人、...
京东物流部署过万前置仓应对手机... IT之家 9 月 13 日消息,据京东物流黑板报,9 月,多个品牌旗舰手机集中上新。针对消费者希望尽...
特朗普让泽连斯基勿袭击俄柴油燃... 9月13日,当地时间9月13日,美国总统特朗普要求乌克兰总统泽连斯基停止袭击俄罗斯柴油燃料设施,称相...
下周,年内最便宜新股启动打新 ... 2026.09.13本文字数:1467,阅读时长大约2分钟作者 |第一财经 安卓封图 |AI生成下周...
北京:激活地理信息要素赋能城市... 9月13日,从北京市规划和自然资源委员会获悉,《北京市测绘地理信息条例》已由北京市第十六届人民代表大...
接下来该如何逃顶?建议看看这篇... 最近这段时间,很多朋友的心里其实都是悬着的。行情走到这个位置,大家见面聊得最多的就是,接下来到底该怎...
武汉:到2035年武汉区域科技... 9月13日,武汉市委十四届十三次全会召开,审议通过了《关于打造具有全球竞争力的开放创新生态 高水平建...
卡塔尔股市收盘上涨0.25% 9月13日,卡塔尔证券交易所主要股指今日收盘上涨0.25%,报9848.95点,上涨24.46点。全...