How to override virtual function in good style? [C++]
伙计们,我知道这个问题非常基本,但我在一些出版物(网站、书籍)中见过不同风格的覆盖虚拟功能。我的意思是:如果我有基础班:
1 2 3 4 5 | class Base { public: virtual void f() = 0; }; |
在一些出版物中,我看到有些作者会说:
1 | void f(); |
号
有些人仍然会在void之前重复虚拟关键字。哪种覆盖形式是好的?谢谢你的回答。
这纯粹是一个品味问题。对于某些样式的自文档价值与其他样式的非冗余性,可以反复提出一些薄弱的论点。
不需要将虚拟关键字添加到您在子类中重写的方法中,因为在子类声明中省略该限定符是无法删除的。
但是,当虚关键字记录哪些派生函数在基类中是虚的时,最好重复该关键字。
这也是"高完整性C++编码标准手册"推荐的。
在C++ FAQ中链接。
我个人使用两种样式:
所以我们有两种情况:
- 如果希望类的用户知道该方法可能被重写,请使用
virtual 关键字 - 如果您希望隐藏这个事实(因为您提供了新的方法,例如在
Template Pattern 之后),那么不要使用virtual 关键字
我想这是(ab?)的另一种方式。使用关键字。