|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 american007 于 2018-5-8 14:58 编辑
看systemverilog 验证测试平台编写指南 这本书上所说:当一个对象没有句柄指向它的时候,则该对象被析构。
,下面代码中chicken_cage不会再赋值给其他对象, chicken_cage会一直指向该对象,因此chicken_cage所指的最后一个对象会一直存在而不会北析构 ?
virtual class animal;
protected int age=-1;
protected string name;
function new(int a, string n);
age = a;
name = n;
endfunction : new
function int get_age();
return age;
endfunction : get_age
function string get_name();
return name;
endfunction : get_name
pure virtual function void make_sound();
endclass : animal
class lion extends animal;
protected string name;
function new(int age, string n);
super.new(age, n);
endfunction : new
function void make_sound();
$display ("The lion, %s, says Roar", get_name());
endfunction : make_sound
endclass : lion
class chicken extends animal;
function new(int age, string n);
super.new(age, n);
endfunction : new
function void make_sound();
$display ("The Chicken, %s, says BECAWW", get_name());
endfunction : make_sound
endclass : chicken
class animal_cage #(type T);
protected T cage[$];
function void cage_animal(T l);
cage.push_back(l);
endfunction : cage_animal
function void list_animals();
$display("Animals in cage:");
foreach (cage)
$display(cage.get_name());
endfunction : list_animals
endclass : animal_cage
module top;
lion lion_h;
chicken chicken_h;
animal_cage #(lion) lion_cage;
animal_cage #(chicken) chicken_cage;
initial begin
lion_cage = new();
lion_h = new(15, "Mustafa");
lion_cage.cage_animal(lion_h);
lion_h = new(15, "Simba");
lion_cage.cage_animal(lion_h);
chicken_cage = new();
chicken_h = new(1, "Little Red Hen");
chicken_cage.cage_animal(chicken_h);
chicken_h = new(1, "Lady Clucksalot");
chicken_cage.cage_animal(chicken_h);
$display("-- Lions --");
lion_cage.list_animals();
$display("-- Chickens --");
chicken_cage.list_animals();
end
endmodule : top |
|