需要在后代 .h 文件中重新声明被覆盖的函数



我有一个基类B,在b.h中我声明了虚函数vf((和常规函数f((。

我有一个后代类 D,我希望在其中覆盖 vf((。 我已经在 d 中实现了 vf(.cpp

  1. 我必须在 d.h 中声明 vf(( 吗? (签名完全相同(

  2. 如果我不覆盖函数 f((,我是否还必须在 d.h 中重新声明 f(( ?

成员函数声明和定义是齐头并进的。除非声明成员函数,否则无法定义该函数。如果声明成员函数但未定义它,则可能会在链接时看到未定义的函数错误。函数声明的virtual方面是正交的。

来回答你的问题,

  1. 我必须在 d.h 中声明 vf(( 吗?(签名完全相同(

是的。

  1. 如果我不覆盖函数 f((,我是否还必须在 d.h 中重新声明 f(( ?

不。

最新更新