推荐答案
测试一下
题目
如果该 class会被继承,则该 class所有定义的 function/task 都需要加 virtual()
A.正确
B.错误
参考答案与知识点
参考答案
B.错误。理由:在 SystemVerilog 或类似 OOP 语言中,只有当基类中的函数或任务期望被子类重写以实现多态行为时,才需要加 virtual 关键字。并非所有定义都需要加 virtual。例如,构造函数、私有函数、或设计中不希望被子类修改的公共函数都不应加 virtual。加 virtual 会引入额外开销(vtable 查找),且不必要地允许子类覆盖,可能破坏封装。因此,只有需要动态绑定的成员才应声明为 virtual,所有定义都加 virtual 是错误的。
涉及知识点
- virtual 关键字的作用
- 多态与动态绑定
- SystemVerilog OOP 继承规则
- 覆盖与隐藏的区别
- 封装性与设计原则