SystemVerilog中$cast方法的作用是什么
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章给大家介绍SystemVerilog中$cast方法的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。$cast是systemverilog中的内建方法。$cas
千家信息网最后更新 2024年11月26日SystemVerilog中$cast方法的作用是什么
这篇文章给大家介绍SystemVerilog中$cast方法的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
$cast是systemverilog中的内建方法。
$cast可以对不同的内建类型进行转换,用的更多的是不同层次之间类的转换。在这种父类与子类之间的转换里, 父类站的高,子类在底下,从父类向子类的转换,称为向下类型转换,而子类向父类的转换称为向上类型转换。向上类型转换是安全的,而反之则是不安全的。原因在于子类既然继承了父类,就拥有父类的一切属性,除此之外,龙生九子,各有不同,子类还有自己独特的个性,这些是父类没有的。当进行向上类型转换时,相当于父类的句柄指向子类对象,这样的话句柄仍然能对子类对象与父类相同的属性进行访问。但是反过来,如果向下类型转换也那么自由,当试图把子类的句柄指向父类的对象会发生什么呢?父类本来划好了一小块地盘,但是因为子类含有比父类更丰富的属性,它很有可能会访问父类并不包含的资源,这时就找不到该资源,越界了,因此会有error。父类就好像上海,子类相当于长三角地区,包含但不仅仅是上海,因此父类能到的地方子类都可以到,反之不行,因此把子类的句柄给父类没关系,但反之不行,所以向下类型是需要有严格的类型检查的,阻止非法转换。
ex1:
class father;
string m_name;
function new (string name);
m_name = name;
endfunction : new
function void print ();
$display("Hello %s", m_name);
endfunction : print
endclass : father
class child1 extends father;
string area1 = "jiangzhehu";
function new (string area1);
super.new(area1);
endfunction : new
endclass : child1
class child2 extends father;
string area2 = "shanghai";
function new (string area2);
super.new(area2);
endfunction : new
endclass : child2
program top;
father f;
child1 c10,c11,c12;
child2 c20,c21,c22;
initial begin
f = new ("shanghai");
f.print();
c10 = new("jiangzhehu");
f = c10;
f.print();
c20 = new("changsanjiao");
f = c20;
f.print();
c20.area2 = "zhejiang";
$cast(c21, f);
c21.print();
$display("has %s", c21.area2);
c22 = c20;
c22.print();
$display("has %s", c22.area2);
c20.area2 = "hangzhou";
c21.print();
$display("has %s", c21.area2);
c22.print();
$display("has %s", c22.area2);
end
endprogram : top
仿真结果如下:
# Hello shanghai# Hello jiangzhehu# Hello changsanjiao# Hello changsanjiao# has zhejiang# Hello changsanjiao# has zhejiang# Hello changsanjiao# has hangzhou# Hello changsanjiao# has hangzhou
请注意,不能直接把$cast(c21, f);前提是先把子类赋给父类才行。
使用cast也不能把c20给c10;
关于SystemVerilog中$cast方法的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
子类
类型
句柄
方法
不同
对象
属性
更多
作用
不行
安全
之间
内容
指向
资源
上海
帮助
不错
独特
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海停车系统软件开发价钱
考研选择网络安全专业
hislis管理系统软件开发
实时数据库 物联网
政务网络安全管控体系
青岛调度服务器品牌
怎么从数据库导出数据
榆林网络技术费用
在维普数据库的高级检索中
高校网络安全教育管理
使用网络技术如何提高信号
网络安全错误的是什么意思
软件开发工作的基础
数据库实验原理报告
mc服务器必备小玩意
软件开发项目进展流程图分析
注意网络安全 防止上当受骗
护苗网络安全播出简报
服务器系统安装安全
移动互联网网络安全
如何看sql数据库账号密码
linux服务器发包教程
网络安全高中分数
备份数据库和分离数据库有何区别
服务器的设置
化魔之城单职业服务器端
商品数据库 下载
数据库scity
医院his数据库含义
ncral网络安全宣传周