1 class rectangle; 2 int length; //类的数据成员 3 int width; 4 5 function new(int l, int w); //类的构造函数 6 length = l; 7 width = w; 8 endfunction 9 10 function int area; //方法 11 return length * width; 12 endfunction 13 endclass : rectangle 14 15 16 module top_rectangle ; 17 18 rectangle rectangle_h; //声明了一个rectangle类型的变量。我们把它命名为rectangle_h,它是个指向长方形类的句柄。句柄类似于内存指针,不同的是句柄不能拿来运算。这句定义为句柄分配了足够的内存了,不过还没为对象分配内存
19 20 initial begin 21 22 rectangle_h = new(.l(50),.w(20)); //我们用new()函数创建一个长度50宽度20的长方形,是在这里为对象分配的内存。
//这个叫做例化对象。我们可以描述这一步为例化rectangle类的一个对象,并用rectangle_h变量来保存
//调用new()的时候为我们的新对象分配内存,我们不再引用的时候回收内存。
23 24 $display("rectangle area: %0d", rectangle_h.area()); //有了保存在rectangle_h变量中的rectangle对象之后,我们可以用area()来计算长方形的面积了。
25 26 end 27 endmodule : top_rectangle