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

相关内容

热门资讯

霍尔木兹海峡,突发!数艘美国海... 美伊代表团举行谈判 据美国媒体报道,美国和伊朗代表团11日在巴基斯坦首都伊斯兰堡举行谈判。当天有美国...
以军发表声明 来源:新华社 央视新闻 以军称打击200多个黎巴嫩真主党目标 新华社消息,以色列国防军11日发表声明...
俄称乌曾企图袭击俄航天发射场 当地时间4月11日,俄罗斯国家航天集团总经理巴卡诺夫在向俄总统普京汇报工作时表示,乌克兰方面曾妄图使...
山西三季度调整储能项目:入库1... 9月12日消息,山西省能源局发布《关于山西省2025年第三季度新型储能项目库拟调整情况的公示》。此次...
蚂蚁CEO韩歆毅:五年内,让人... 9月12日消息,蚂蚁集团CEO韩歆毅在2025Inclusion·外滩大会上表示,旗下AI健康应用A...
361度:正探索使用稳定币支付... 9月12日消息,361度港交所公告,公司近期正探索使用稳定币支付和结算的解决方案,用于本集团在中国大...
日本将俄罗斯石油价格上限下调至... 9月12日消息,据报道,作为附加制裁措施的一部分,日本将俄罗斯石油价格上限下调至每桶47.6美元。(...
年内IPO募资金额超去年全年 9月12日消息,按网上发行日统计,截至2025年9月12日,A股市场共68只新股发行,累计募资超67...
美前高官:美国信誉比以往任何时... 当地时间4月10日,美国前交通部长、民主党人布蒂吉格在纽约一场活动上发表演讲,抨击美国政府对伊朗的战...
【美媒称美舰已从霍尔木兹海峡返... 【美媒称美舰已从霍尔木兹海峡返航】美国媒体11日援引美国官员的话报道,美军军舰当天自东向西穿越霍尔木...