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函数)

 

 

 

posted on 2022-01-14 11:28  知北游。。  阅读(297)  评论(0编辑  收藏  举报

导航