SystemVerilog更好的复制类的方法

时间:2014-03-24 01:59:16

标签: system-verilog

两个复制功能中的哪一个更好?

一个。使用对函数参数的引用:

function void copy(ref MyClass copyme);
    MyClass copyme = new this;
endfunction

B中。返回新实例化的副本:

function MyClass copy();
    return new this;
endfunction

1 个答案:

答案 0 :(得分:6)

像A这样的东西是copy()的首选。使用clone()进行创建然后复制。复制和克隆通常写为

class Myclass;
  int A;
  function void copy(Myclass rhs)
    this.A = rhs.A;
  endfunction
  virtual function Myclass clone();
    clone = new();
    clone.copy(this);
  endfunction
endclass

请注意,clone 虚拟copy 非虚拟。此外,您不需要将类句柄作为ref参数传递 - 类变量已经是引用。