|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
有如下代码:
class Trans_base;
int i=1;
function void display();
$display("value of i: %d\n",i);
endfunction
endclass
class Trans_ext extends Trans_base;
int i=2;
function void display();
$display("value of i: %d\n",i);
endfunction
endclass
module top;
Trans_base tr1;
Trans_ext tr2;
initial begin
tr2 = new();
tr2.display();
tr1 = tr2;
tr1.display();
end
endmodule
为什么打印的结果是:
2
1
而不是:
2
2
按照我的理解,“tr1 = tr2;”这句话只是把tr1指向了一块tr2的对象的memory,但是这块memory在之前(执行tr2=new()的时候)已经分配好了的啊,这句话难道把i值也改变了?
int i=1;和int i=2;这两句话应该是在初始化分配对象的内存时才会执行的啊,怎么感觉
tr1 = tr2;这句话在执行的时候也重新执行了int i = 1;这个语句呢?
本人菜鸟,多谢各位前辈指教! |
|