为什么我们需要将函数声明复制并粘贴到继承的类头中

mr.*_*poe 3 c++ inheritance coding-style class

这适用于C++.

通常我们在源文件中的头文件和定义中有我们的函数声明.假设我们有一个带有一些功能的A类:

//< A.hpp
class A
{
public:
   virtual funcA();
   virtual funcB();
}
Run Code Online (Sandbox Code Playgroud)

我们希望从A继承一个类并覆盖它的函数.

//< childA.hpp
class childA
{
   virtual funcA();
   virtual funcB();
}
Run Code Online (Sandbox Code Playgroud)

每次我们更改声明时funcA() funcB(),我们都需要将新声明复制并粘贴到子类头文件中.如果继承链很长,那就太麻烦了.

我记得Object-C没有这个问题,对吗?

jjl*_*lin 5

除非要覆盖它,否则不需要将成员函数声明复制到子类的头文件中.在这种情况下,我认为您需要声明它的主要原因是通知读取您的头文件的任何人,该子类提供了不同的实现.原则上,编译器可以自动计算出来,但对于人类来说,手动执行相同的操作可能会非常痛苦.

请注意,在许多情况下,读取头文件的人可能无法访问正文的实际源代码(例如,如果它是作为编译对象传递给他们的专有库),那么他们不能只看看身体弄明白了.