SV基础知识7---面向对象的高级技巧

目录

1 类型转换

概述

$cast动态转换

2 虚方法(类的多态)

3 对象拷贝

4 回调函数(callback)

5 参数化的类


1 类型转换

概述

  • 类型转换可分为静态转换和动态转换
  • 静态转换:需要在转换的表达式前加上单引号,该方式并不会对转换做检查,如果转换失败,我们也无法得知
real r=4.0;
int i;
i = int'(4.0) //静态转换
  • 动态转换:需要使用系统函数$cast(tgt,src)做转换,执行成功返回1,否则返回0 
  • 以上两种需要操作符或系统函数介入的转换称为显示转换;还有一种不需要任何转换操作,称为隐式转换,例如不同位宽矢量的赋值。

$cast动态转换

子类句柄赋值给父类句柄实例

class Transaction;   //基类
  rand bit [31:0] src;
  function void display()'
 ...
endclass

class BadTr extends Transaction; //子类
  bit bad_src;
  function void display();
    super.display;
    $display(...)
...
endclass

Transaction tr; //基类句柄tr
BadTr bad; //
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值