在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2408|回复: 6

[求助] 关于systemverilog中cast的一系列问题

[复制链接]
发表于 2020-11-26 16:40:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
image.png 第一个问题:图中这个位置为什么需要使用cast进行转换,h.def=def中的def本身不就是子类对象中的值吗,子类对象中的值赋给子类句柄指向的对象为什么需要cast。
第二个问题:h这个句柄也没有例化分配空间 怎么就可以直接h.def=def赋值。

第三个问题:关于test_wr t到copy_data(basic_test t)的隐式转换,t指向的对象一直都是子类吗,如果是的话t.def为什么我打印一直输出的都是父类的def,这个指向的对象和具体的输出变量有关系吗?
谢谢各位了
image.png
发表于 2020-11-26 22:39:50 来自手机 | 显示全部楼层
1. h是子类,父类的句柄直接赋值给子类句柄可能会有问题,需要使用cast转换
发表于 2020-11-26 22:46:09 来自手机 | 显示全部楼层
2.  cast相当于句柄转换,参数t应该已经new过了,因此h指向t,不用再new
发表于 2020-11-26 22:50:46 来自手机 | 显示全部楼层
最后一个问题没看懂
 楼主| 发表于 2020-11-27 09:23:31 | 显示全部楼层


阿莹的三石 发表于 2020-11-26 22:39
1. h是子类,父类的句柄直接赋值给子类句柄可能会有问题,需要使用cast转换 ...


其实我的疑惑就是在于,用了cast转换,为什么def的值和t.def的值不一样,如果说把def看成是父类句柄指向的对象,那么和t.def不是应该一样的吗,我打印出来的结果并不一样。第三个问题的意思是,最开始的时候声明句柄t 是子类句柄,那么t.def肯定是子类句柄指向的变量,如果隐式转换以后t从子类句柄变成了父类句柄,那么t指向的对象还是子类对象吗,t.def是父类中的def还是子类中的def,按理说指向的对象应该还是子类的不然cast也无法正常转换了。。十分感谢,,,我后面补充的这些细节,能不能帮忙解答一下。。
发表于 2020-11-27 13:26:05 来自手机 | 显示全部楼层
父类句柄指向子类,真实的对象还是子类,因此def的值为子类的值。但是你给的图片在调用super. copy_data时候会把t内部的def值改为父类的,然后h. def=def又会把t内部的def改为200,t和h是同一个对象
 楼主| 发表于 2020-11-30 08:04:54 | 显示全部楼层


阿莹的三石 发表于 2020-11-27 13:26
父类句柄指向子类,真实的对象还是子类,因此def的值为子类的值。但是你给的图片在调用super. copy_data时 ...


好的,谢谢基本明白了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-1 04:45 , Processed in 0.023995 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表