每一个类都必须具备一个new()函数。用户可以不单独定义new()函数,但系统会在编译时为其隐式声明一个空白实现的new()函数。在调用new()函数时,其会先开辟空间,且伴随成员变量的声明和初始化,继而进入new()函数体执行语句。new()函数定义时不能指定返回类型,而在调用时其返回的是该对象的句柄。
关键词:
new函数,initialization
避坑指南:
在定义子类时,如果不实现new()函数,那么隐式声明的new()函数不带有任何参数,这可能会与父类new()函数的参数不一致。子类与父类的new()函数参数不一致本身不会有问题,但需要考虑在子类new()函数中如何正确地调用父类new()函数。一般情况下,子类应该显式地调用父类的new函数(以及正确地传入参数),即super.new(),否则可能会遇到编译错误。
参考代码: sv_subclass_new_def.sv
阅读手记: