SystemVerilog中$cast方法的作用是什么
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家介绍SystemVerilog中$cast方法的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。$cast是systemverilog中的内建方法。$cas
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
kk7登陆服务器信息
网易电脑版我的世界服务器在哪
软件开发转测试怎么找工作
aipp软件开发
orcale数据库乱码
测试数据库安全策略
sql数据库 下载
数据库技术的应用领域
服务器 硬盘报警
云南省网络安全与信息化中心
付软件开发费怎么做凭证
数据库原理与技术课后题答案
网络安全就是按照等保来做吗
网络安全中队记录表
三级数据库技术靠的是啥
常见的web服务器软件搭配方式
网页登录用哪种数据库
石家庄乐推网络技术有限公司
南京光学设计软件开发
信息会考网络技术
杭州地铁软件开发岗
威海戴尔服务器代理零售商
play商店服务器连接错误
软件开发项目提案
网络安全 维护国家安全
idc网络技术
数据库高等教育出版社课件
服务器究竟是用来干什么的
vpn服务器地址lp
网络安全利与弊简短