Virtual Table

SystemVerilog 中的虚函数(virtual function)相关问题解析

1. vptr 和 vtable 的存储位置及绑定关系

2. override 时父类是 virtual 函数而子类不是

3. override 时子类是 virtual 函数而父类不是

关键总结

  1. vptr 在对象中,vtable 在只读段,vptr 指向当前类的 vtable。
  2. 父类虚函数的子类实现总是虚函数(无论是否显式标记)。
  3. 父类非虚函数的子类虚函数是独立的新函数,无法通过基类指针多态调用。

最佳实践