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安全错误
数据库的锁怎样保障安全
微信网页数据库
人民铁道网络安全
软件开发团队成员职责
如何上传网络安全训练营
中国信号网络安全标准研究现状
互联网如何直接读服务器硬盘数据
南宁加固服务器价格多少
重庆家庭教育与网络安全
数据库字段插入
权限管理数据库设计脚本
omim数据库下载不全怎么办
北京金裕网络技术有限公司
互联网科技研发行业的晋升路线
上海网络安全磐石行动
工厂里的软件开发职业规划
找出是否重复数据库
苏州中高端服务器应用范围
快看网络安全注意事项
计算机网络安全管理包括哪些
网络技术基础一部十章答案
单机软件 数据库
龙游天气预报软件开发
南通皓伏网络技术有限公司
服务器启动的端口号
北邮网络安全考研单科分数线
人工智能公司网络安全
互联网评说每日科技热点
服务器网络通讯错误是什么意思
服务器突然
网络安全要求日志保存