sv中的构造函数new()与new[ ]的区别

一、构造函数new()与new[]

1.new

sv中创建一个类,用类声明一个句柄,利用句柄来例化一个对象(这个过程好比于你自己构想了一个勺子,勺子叫啥就叫句柄,但是构想的勺子不能在现实生活中使用,需要将其创建出来,也就是构造出来)。而这个例化的的方法就是调用new()函数,new函数本省存在于自己定义的类当中,默认情况下系统会在定义的类中默认创建一个new()函数,也可由我们自己定义。

注意:1, 在使用new()函数创建对象过程中,除了会为类中各个对象分配内存之外,还会将变量设置为默认数值

2, new函数由于是构造函数,其本身不能有返回值,而是返回一个指向类对象的句柄,其类型就是类本身。代码如下 

class example1;//创建一个类
        logic[3:0] addr;
        logic[8:0] data;
        function new;
                addr = 8;
                data = 1;
        endfunction
endclass

example1 ex;   //声明一个句柄
ex = new();    //将句柄实例化

2.new[ ]

一般new [ ]也是用来开辟内存并初始化,但是它主要用于设置动态数组的大小

与new()不同点:

1, 调用new函数是用于将对象实例化,而new[ ]则是创建了一个含有多个元素的数组

2, new()函数可以利用参数来改变对象中变量的值,而new[ ]的参数仅仅被用作设置动态数组的大小。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值