我有一个基类B,在b.h中我声明了虚函数vf()和常规函数f()。
我有一个后代D类,我希望覆盖vf()。我在d.cpp中实现了vf()
我必须在d.h中声明vf()吗? (使用完全相同的签名)
如果我不覆盖函数f(),我是否还必须在d.h中重新声明f()?
答案 0 :(得分:1)
成员函数声明和定义齐头并进。除非声明成员函数,否则无法定义成员函数。如果声明成员函数并且未定义它,则可能会在链接时看到未定义的函数错误。函数声明的virtual
方面是正交的。
回答你的问题,
- 我必须在d.h中声明vf()吗? (使用完全相同的签名)
醇>
是
- 如果我不覆盖函数f(),我是否还必须在d.h中重新声明f()?
醇>
没有