4.6类的浅复制(shallow copy)与深复制(deep copy)
资料来源
(1) The UVM Primer;
(2) sv绿皮书;
(3) 硅芯思见:【106】SystemVerilog中的浅复制(shallow copy)和深复制(deep copy) (qq.com)
1.copy(要点是需要先例化)
(1) copy对象不像想象的那么简单,简单的赋值语句obj2_h=obj1_h,并没有为obj2_h创建一个新的对象,而是指向了与obj1_h相同的对象;
(2) 为了真正的copy一个对象,需要先例化,然后copy data,如下图所示;
2.Shallow copy
2.1使用new操作符复制一个对象
(1)new操作符创建了一个新的对象,并且复制了现有对象的所有变量;但是如果类中包含一个指向另一个类的句柄,下层的对象都不会被复制;
注1:当调用new操作符进行复制的时候,Transaction对象被拷贝,但是Statistics对象没有被复制;
注2:当调用new操作符进行复制的时候,Transaction的new函数不会被调用;
3.Deep copy(需要调用类所包含的所有对象的copy函数)