首页 » 互联网 » 企业笔试真题解析003 企业笔试真题解析003 芯片验证_函数_多态性

企业笔试真题解析003 企业笔试真题解析003 芯片验证_函数_多态性

admin 2024-12-13 18:26:49 0

扫一扫用手机浏览

文章目录 [+]

本日来看一道海光的数字芯片设计的一道题。
左边是程序的代码,希望能推算出来程序输出的结果是什么。

这上面是一个类,这个类叫a,a类也定义了三种方法,分别是show name、show h以及show name and h这三个函数。
这三个函数里面有两个是虚函数,便是以virtual开头的虚函数。
虚函数是可以被子类所重载的,子类是相称于可以来阐明函数的类部的东西的,或者说函数可以被子类重新定义。

企业笔试真题解析003 企业笔试真题解析003 芯片验证_函数_多态性 企业笔试真题解析003 企业笔试真题解析003 芯片验证_函数_多态性 互联网

b的答案便是a的词类该当是继续,从a继续下来的,也定义了3个同样的函数。
再看看后面详细怎么用。
利用的时候看一下,先是把b、b、b实体化的new出来做实体化,b直接把b的指针就输给了a,a再去调a的三个函数。

企业笔试真题解析003 企业笔试真题解析003 芯片验证_函数_多态性 企业笔试真题解析003 企业笔试真题解析003 芯片验证_函数_多态性 互联网
(图片来自网络侵删)

详细来剖析一下,这种利用办法的过程当中由于a并不是溜出来的,仅仅是把b的指针附给了a,因此在调a的第一个函数时候来看一下,手动正常来讲该当调这个函数是a这个类。

这个函数大家把稳,由于它是一个虚函数,虚函数是可以被子类所重载的,也便是虚函数由于多态性,被子类重载的时候实行的史上是这段函数。

·第一段是a,虽然表面上看是a里面的函数,但由于它是能被重载,以是身上掉的是BBB类里面的IMBB,它显示的是这句话,以是第一个该当是显示的这一句。

·第二段是h,一样的,回到a的里面是a的函数,由于这个函数并不是虚函数,就意味着函数不能够被重载,因此肯定就实行自己的函数体,因此它显示的该当是IM,我25岁,以是该当选的是这个。

·第三段函数,一样的,回到AA类里面来看,由于它也是虚函数,因此也可以被主宰,以是它实行的实际上是子类里面的虚函数。
子类里面虚函数大家把稳,调的show name和showh,当然便是调到BB类里面的show h和show name,以是它该当实行的便是MBB和M18Z,该当是这样的,这个便是准确的输出的结果。

·第四段要把稳一下,对付这种函数的多态性实际上有个须要把稳的地方,便是把子类的实际化往后的差异或者叫指针附给到父类,然后才会涌现虚函数被重载、多态性这些事情。

但是如果不是这么赋值的,举个例子,比如在这个地方AA便是自己new出来的,并不是把AB的指针复过来便是自己扭出来,就跟虚函数多态性就毫无关系。
大家把稳,由于AA是自己实例化出来的,以是跳的所有的函数都该当是自己的函数。

因此大家实际上可以想一下,如果是这样的一种情形,这种情形实际上实行的都是a里面的函数,以是实行结果就完备不一样了,就该当是Maa,y25岁MaaMaMa525岁,该当是实行的是这样的一句。

以是大家可以比较一下,这两段时尚差一点就在这,这个地方是把b的BB的指针复印到AA,这个地方是AA是独立实例化,独立new出来。
以是这个须要把稳,纵然是虚函数想去重载它,要利用这种方法,否则是不能够实现多态性的。
如果直接弄出来,肯定不能实现多态性。

实际上在systemverilog手册里面是有解释的,在systemverilog手册里面,实际上在它的7.19这一节,这个便是它的手册,iEEE是由于IEEE的标准手册。

在7点哀求这一节里面首先讲过virtual的函数,这个例子也非常的清楚,比如它有一个基位叫base package,然后在用定的一个子类叫ether packet,ether packet就继续到base packet。

当然还可以定义其他的类,比如像TOKEN packet、GPS packet都是从base packet继续来的。
如果把它们三个都实例化完之后,再定义一个basepacket这样的数组,把子类的指针敷到数组的不同的元素上。
它这个意思里面跟你讲packet的一点sent,也便是packet的点cent。

实际上它由于SCENT是一个虚的函数,在上面的地方看到它是一个virtual的函数,因此它可以被子类所重载。
因此它实际上掉的是谁?SCENT实际上掉的是谁?是TOKEN packet里面的SCENT。

这个身上也便是语法书上,它把逻辑的实际上也做理解释,做了很清楚的阐明,以是跟之前看的这个题实在是一样的。
当然大家如果对这个理解还是不足深入,也可以从代码侧面去看一下。

便是这个代码也可以在这个,可以把这个代码敲进来,敲进来之后可以实行一下看一下,看看是不是跟理论上是一样的。
这个便是题里面它的依据,可以给它编一下,编一下再仿真一下看看。
大家可以看到这个便是跟理论上是一样的。

学生也可以把什么?比如这个地方,如果不是用这个,是把它独立new出来,结果肯定就又不一样了。
可以再编一下,绑定完之后再实行一下。
大家可以看到这个时候调的这些就全是a这个类里面的函数,这个跟bb那个类就毫无关系的。
由于a这个类是自己new出来的,自己实力化出来的,跟bb实在没有发生任何关系。

因此调的函数全是aa这个种别。
以是关于多态性以及它的实现的方法还是须要把稳的,尤其是这两段之间的比较。

关于魔球这种特性,我们就讲到这里。

标签:

相关文章

B760IT,引领未来智能科技的创新引擎

随着科技的飞速发展,我国在智能科技领域取得了举世瞩目的成就。在这其中,B760IT作为一款具有划时代意义的智能产品,无疑成为了引领...

互联网 2024-12-28 阅读0 评论0

CSS3凸起,设计与美学的完美融合

随着互联网技术的飞速发展,网页设计逐渐成为一门融合美学与技术的艺术。在众多设计元素中,CSS3凸起效果以其独特的视觉效果和丰富的表...

互联网 2024-12-28 阅读0 评论0

CSS3缩放,介绍网页设计中的视觉魔法

随着互联网技术的飞速发展,网页设计越来越注重用户体验。在众多前端技术中,CSS3缩放功能无疑为设计师们提供了强大的视觉表现力。本文...

互联网 2024-12-28 阅读0 评论0