在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1679|回复: 0

[转贴] 关于OOP中多态的理解

[复制链接]
发表于 2021-4-7 08:55:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
codes:makefile
run1:
vcs -sverilog -timescale=1ns/1ps po.v

run2:
vcs -sverilog -timescale=1ns/1ps po_bak.v

codes:po.v
module po;
class Packet;
int crc;
extern function int compute_crc();
endclass
function int Packet::compute_crc();
return 1;
endfunction

class MyPacket extends Packet;
extern function int compute_crc();
endclass
function int MyPacket::compute_crc();
return 0;
endfunction

function int crc(Packet pkt);
crc = pkt.compute_crc();
endfunction

initial begin
Packet p1=new();
MyPacket p2=new();

p1.crc=p1.compute_crc();
$display("p1.crc = %0d", p1.crc);

p2.crc = p2.compute_crc();
$display("p1.crc = %0d", p2.crc);

p1.crc = crc(p1);
$display("p1.crc = %0d", p1.crc);

p2.crc = crc(p2);
$display("p2.crc = %0d", p2.crc);
end
endmodule

codes:po_bak.v
module po_bak;
class Packet;
int crc;
extern virtual function int compute_crc();
endclass
function int Packet::compute_crc();
return 1;
endfunction

class MyPacket extends Packet;
extern virtual function int compute_crc();
endclass
function int MyPacket::compute_crc();
return 0;
endfunction

function int crc(Packet pkt);
crc = pkt.compute_crc();
endfunction

initial begin
Packet p1=new();
MyPacket p2=new();

p1.crc=p1.compute_crc();
$display("p1.crc = %0d", p1.crc);

p2.crc = p2.compute_crc();
$display("p1.crc = %0d", p2.crc);

p1.crc = crc(p1);
$display("p1.crc = %0d", p1.crc);

p2.crc = crc(p2);
$display("p2.crc = %0d", p2.crc);
end
endmodule


>make run1
p1.crc = 1
p2.crc = 0
p1.crc = 1
p2.crc = 1

>make run2
p1.crc = 1
p2.crc = 0
p1.crc = 1
p2.crc =  0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-18 23:47 , Processed in 0.011890 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表