1、原题

class class_a;
virtual function void print_name();
$display("this is class_a");
endfunction
endclass class class_b extends class_a;
virtual function void print_name();
$display("this is class_b");
endfunction
endclass module test;
initial begin
begin:class_test1
class_a a;
class_b b;
a = new();
b = new();
a.print_name();
b.print_name();
end
begin:class_test2
class_a a;
class_b b;
b = new;
a = b;
a.print_name();
b.print_name();
end
begin:class_test3
class_a a;
class_a a2;
class_b b;
class_b b2;
b = new();
a = b;
a2 = new();
b2 = b;
a2.print_name();
$cast(a2,a);
a2.print_name();
b2.print_name();
end
end endmodule

2、执行结果

  1)使用a=new会创建一个新对象,并且将句柄a指向这个新创建的对象;使用a=b不会创建新对象,只是将句柄a指向已经存在的对象b

  2)原因:基类中display()为虚函数,具体调用哪个x.dispaly()取决于句柄x所指向的对象类型,而不是取决于x这个句柄本身的类型

# this is class_a
# this is class_b
# this is class_b
# this is class_b
# this is class_a
# this is class_b
# this is class_b

  3)原因:同2

# this is class_a
# this is class_b
# this is class_b
# this is class_b
# this is class_a
# this is class_b
# this is class_b

  4)原因:基类中display()不为虚函数,具体调用哪个x.dispaly()取决于x这个句柄本身的类型

# this is class_a
# this is class_b
# this is class_a
# this is class_b
# this is class_a
# this is class_a
# this is class_b

SV 类继承的多态性问题(NVDIA2019笔试)的更多相关文章

  1. javaScript的原型继承与多态性

    1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...

  2. C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类

    类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...

  3. C++ 三大特性:封装、继承、多态性

    要讲  封装.继承.多态就必须从面向对象说起 开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称为该软件的问题域.面向对象的编程语言将客观事物看作具有属性和行为(或服务)的对象,通过抽象找出同 ...

  4. Java类的设计----多态性及其应用

    多态性及其应用 多态性 多态—在Java中,子类的对象可以替代父类的对象使用一个变量只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Stude ...

  5. java类继承总结一 父类类型与子类类型之间的转化问题(转)

    java类继承总结一 父类类型与子类类型之间的转化问题 本文将通过一个实例描述父类类型与子类类型之间的转化问题,这个很特殊的问题常常会导致一些潜在的危险,让你整整一个晚上都在调试程序以解决一个让人抓狂 ...

  6. C#继承的多态性

    C#继承的多态性 当一个类A派生出新类B时,这个基类A在新类B中可以表现为不同的类型:用作它自己的类型.基类型,或者在实现接口时用作接口类型,我们将这种情况称为多态性. C#中的每种类型都是多态性的, ...

  7. Object与封装、继承和多态性

    Object与封装.继承和多态性 在面向对象编程思想中,无论是C++,Java还是C#等,封装.继承与多态性都有着无与伦比的地位,深入理解并掌握它们是必不可少的.而我将使用C#来浅谈继承与多态性. 1 ...

  8. javascript类继承的一些实验

    其实一开始编js没怎么用过对象,一般都用func,func,func···但是用多了,感觉代码一点都不美观,还要这里包一个函数,那里包一个函数,或者一直都是函数调用,不好看,而且一些重用的都要重写的话 ...

  9. C++ 类继承的对象布局

    C++多重继承下,对象布局与编译器,是否为虚拟继承都有很大关系,下面将逐一分析其中的差别,相同点为都按照类继承的先后顺序布局(类内按照虚表.成员声明先后顺序排列).该类情况为子类按照继承顺序排列,如c ...

随机推荐

  1. 在cmd中启动tomcat

    E:\Documents and Settings\topicis>h: H:\>cd tomcat-test H:\tomcat-test>cd bin H:\tomcat-tes ...

  2. 《windows程序设计》第三章学习心得

    第三章是基于对一个windows窗口的学习,来达到对windows程序运行机制的理解. 从语言的角度看消息机制,Windows给程序发消息的本质就是调用"窗口过程"函数. Don' ...

  3. Vmware初次安装虚拟机需要做的一些网络配置——nat模式与桥接模式

    一.本机设置: 1.首先点击图中红线区域: 2.点击网络适配器  3.会出现如下区域: 4.网卡开启后设置ip地址,此处设置的ip和本机的ip没有关系,设置成你虚拟机里面运行的计算机需要的ip地址网段 ...

  4. sql中常量和变量的引用

    String name =jtf.getText().trim(); String sql="select * from stu where stuname='  "+name+& ...

  5. java11类和对象

    import java.util.Scanner; public class jh_01_如何认识事物 { public static void main(String[] args) { Scann ...

  6. what can we do if just only want to truncate transaction log without backup ?

    n some circumstances, we just want to truncate transaction log without backup and refuce change data ...

  7. 机器学习(ML)十二之编码解码器、束搜索与注意力机制

    编码器—解码器(seq2seq) 在自然语言处理的很多应用中,输入和输出都可以是不定长序列.以机器翻译为例,输入可以是一段不定长的英语文本序列,输出可以是一段不定长的法语文本序列,例如 英语输入:“T ...

  8. java8 Stream API笔记

    生成Stream Source的方式 从Collection和数组生成 * Collection.stream() * Collection.parallelStream() * Arrays.str ...

  9. Coroutine 终止协程和异常处理

    终止协程和异常处理 协程中未处理的异常会向上冒泡,传给 next 函数或 send 方法的调用方(即触发协程的对象) 终止协程的一种方式:发送某个哨符值,让协程退出.内置的 None 和 Ellips ...

  10. ELK(V7)部署与架构分析

    1.ELK的背景介绍与应用场景 在项目应用运行的过程中,往往会产生大量的日志,我们往往需要根据日志来定位分析我们的服务器项目运行情况与BUG产生位置.一般情况下直接在日志文件中tailf. grep. ...