一、覆盖方法
覆盖机制可以将原来所属的类型替换为另外一个新的类型。
在覆盖之后,原本用来创建原属类型的请求,将由工厂来创建新的替换类型。
- 无需再修改原始代码,继而保证了原有代码的封装性。
- 新的替换类型必须与被替换类型兼容,否则稍后的句柄赋值将失效,所以使用继承,例如可以用子类来覆盖原本的父类。
做顶层修改时,非常方便
覆盖实例
父类 hello 方法加了virtual
使用comp1::type_id::set_override(comp2::get_type()); // 类型覆盖
只有用工厂创建对象比如说创建uvm_component对象时
comp_type::type_id::create(string name,uvm_component parent);
工厂才会做类型覆盖
使用类型覆盖后,c2=comp1::type_id::create(“c2”,null),返回 的是comp2的句柄。
层次越高的类型替换生效。