需要在后代 .h 文件中重新声明被覆盖的函数
Need to redeclare overridden functions in descendant .h file
我有一个基类B,在b.h中我声明了虚函数vf((和常规函数f((。
我有一个后代类 D,我希望在其中覆盖 vf((。 我已经在 d 中实现了 vf(.cpp
-
我必须在 d.h 中声明 vf(( 吗? (签名完全相同(
-
如果我不覆盖函数 f((,我是否还必须在 d.h 中重新声明 f(( ?
成员函数声明和定义是齐头并进的。除非声明成员函数,否则无法定义该函数。如果声明成员函数但未定义它,则可能会在链接时看到未定义的函数错误。函数声明的virtual
方面是正交的。
来回答你的问题,
- 我必须在 d.h 中声明 vf(( 吗?(签名完全相同(
是的。
- 如果我不覆盖函数 f((,我是否还必须在 d.h 中重新声明 f(( ?
不。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 使用ios:ate写入到流会覆盖现有文件
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- 在多个头文件中从接口声明被覆盖的函数时,如何避免重复代码?
- 如何声明从 QApplication 派生的 Qt 类并覆盖通知函数?
- 需要在后代 .h 文件中重新声明被覆盖的函数
- 如何在类声明之外实现显式覆盖
- 我如何在抽象类中声明一个超载的运算符,并在派生的非抽象类中覆盖它
- 为什么我得到 C2883:函数声明与 - 在仅覆盖基类中的一个重载时通过使用 - delcaration 引入
- 覆盖使用模板参数包扩展声明的虚拟方法时遇到问题