使用继承时是否需要“#include”child的parentclass的头文件。 C++

When using inheritance is it necessary to "#include" the header file of child's parent class. C++

我正在使用 C++ 开发一个多重继承项目。我有 class 定义 (.h) 和实现 (.cpp) 的单独文件。由于这是我第一次在 C++ 中使用继承(我们的其余作业都在 C# 中),所以有些地方不太清楚。

我需要在child.cpp#include "parent.h",还是在child.h中定义继承关系就足够了,即:

class child : parent 
{ 
     // child class definition
};

我被一个自动提示警告说这可能是一个主观问题,所以让我明确一点:我问的是这是否是对继承的功能要求正常工作,而不是如果它是 "good form" 或任何类似的东西。

问题

Do I need to #include "parent.h" in child.cpp, or is it sufficient to have defined the inheritance relationship in child.h

回答

No, you don't need to #include "parent.h" in child.cpp. It is sufficient to #include "child.h" in child.cpp. The contents of "parent.h" are available in child.cpp since child.h already has #include "parent.h"

以防万一不清楚:
#include 进行简单的文本复制,不涉及其他逻辑。

所以不,没有必要。但是原因不是你定义了继承关系,而是因为 #include "parent.h" in child.h 已经将 parent.h 的文本复制到 child.h,然后 #include child.h in child.cpp,复制整个文本(包括来自parent.h) 那里。另一个包含将是多余的,如果没有包含保护,它甚至会导致编译器错误。

顺便说一句:从概念上讲,您的编译器不会将头文件视为单独的实体。它只看到一个文本流,它是通过从 cpp 文件开始然后执行(递归地)所有 #include 指令生成的。