zoukankan      html  css  js  c++  java
  • SV 类继承的多态性问题(NVDIA2019笔试)

    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
  • 相关阅读:
    使用SELECT语句检索数据
    redis的安装和使用【2】redis的java操作
    Python之数据结构改造
    InnoDB undo log物理结构的初始化
    Redis-RDB持久化设置
    MySql(四)Select条件查询
    Node.js TLS/SSL
    Node.js 定时器
    Node.js 系统
    Node.js 字符串解码器
  • 原文地址:https://www.cnblogs.com/wt-seu/p/12367267.html
Copyright © 2011-2022 走看看