如下题目所示:
class Transaction
logic [31:0] addr = 'h10;
logic [31:0] crc,data[8];
function new(logic [31:0] a =3, d =5);
addr = a;
foreach (data[i])
data[i] = d;
endfunction
endclass
initial begin
Transaction tr,tr1;
tr = new(10);
tr1 = new();
end
理解new()创建对象的过程, 首先new(10)根据类 中的变量类型,addr,crc和data来开辟空间,这时addr先被赋值16。之后,我们 传递参数10进入函数,addr值被覆盖为10。
而 new()函数调用时,未从外部传递 参数,因此,addr值被赋值为3。
对象的创建和销毁:
class word
byte nb[];
function new(int n);
nb = new[n]; //动态数组空间开辟
endfu