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

相关内容

热门资讯

十五连板牛股提示:若股价进一步... 1月20日,十五连板锋龙股份公告称,目前,公司股票价格已严重脱离公司基本面情况,存在市场情绪过热、非...
郑光泉到高新区调研融合发展高新... 郑光泉调研融合发展高新片区工作时强调 更加注重推动产城人文融合发展 打造高质量的高新技术产业新城 1...
足球加脐橙,有没有搞头? 自从苏超火了之后,各地都有了自己的“超”,这股子精气神好像还影响到了国家队。最近,U23男足竟然赢了...
逾2万股东踩雷,*ST奥维多重... 逾52万手卖单封死跌停板,1月20日,*ST奥维(002231.SZ)继续跌停,股价收报0.85元,...
广发基金经理杨冬的百亿光环与情... 作者 |郑理来源 | 独角金融2026年1月中旬,一则朋友圈产前亲子鉴定报告截图,将广发基金管理有限...
卖了3199万元!德信集团董事... 红星资本局1月20日消息,今日,杭州南星板块金色海岸小区一套建筑面积376.8㎡的江景跃层房源被法拍...
「寻芯记」存储概念继续拉升!佰... 本报(chinatimes.net.cn)记者石飞月 北京报道行业龙头企业关于市场趋势的判断,再次带...
四大重磅信号!国家发改委:正研... 图片来源:摄图网全文共4051字,阅读全文约需9分钟2026年工作将围绕布局高新技术工程、扩大内需、...
东北证券去年净利润增逾69%至... 东北证券股份有限公司(下称“东北证券”,000686)去年净利润同比(与前一年同期相较)增加近70%...
锂电材料龙头璞泰来预计去年净利... 1月20日晚间,锂电材料龙头上海璞泰来新能源科技集团股份有限公司(下称“璞泰来”,603659.SH...