对象的复制
时间:10-02
整理:3721RD
点击:
请问下大家,在看绿皮书时,对象的复制看不懂,下面的代码:class Transaction
bit [31:0] addr, crc, data[8];
static int count = 0;
int id;
Statistics stats;
function new;
stats = new();
id = count++;
endfunction
endclass
Transaction src, dst;
initial begin
src = new();//创建一个Transaction对象
src.stats.startT = 42;
dst = new src; //用new操作符将src拷贝到dst中,结果dst与src一样
dst.stats.startT = 96;
$display(src.stats.startT);
end
复制完以后,dst与src指向同样的内容,但是为什么改变了dst,src指向的内容会改变?还有什么叫shallow copy?
谢谢!
bit [31:0] addr, crc, data[8];
static int count = 0;
int id;
Statistics stats;
function new;
stats = new();
id = count++;
endfunction
endclass
Transaction src, dst;
initial begin
src = new();//创建一个Transaction对象
src.stats.startT = 42;
dst = new src; //用new操作符将src拷贝到dst中,结果dst与src一样
dst.stats.startT = 96;
$display(src.stats.startT);
end
复制完以后,dst与src指向同样的内容,但是为什么改变了dst,src指向的内容会改变?还有什么叫shallow copy?
谢谢!
这就是浅拷贝的特性呀,书上应该有说,两个对象本身的方法和属性可以独立,但里面引用的对象是共有的,改变一个,另外一个也同时改变。