使用继承时,是否必须"#include"子类父类的头文件。 C++

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

本文关键字:父类 子类 文件 C++ #include 继承 是否      更新时间:2023-10-16

我正在C++从事一个多重继承项目。我有单独的文件用于类定义 (.h( 和实现 (.cpp(。由于这是我第一次在C++中使用继承(我们的其余作业都在 C# 中(,因此有些事情有点不清楚。

我是否需要在child.cpp#include "parent.h",或者是否足以在child.h中定义继承关系,即:

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

自动提示警告我这可能是一个主观问题,所以让我明确一点:我问这是否是继承正常工作的功能要求,而不是它是否是"良好形式"或类似的东西。

问题

我是否需要在child.cpp#include "parent.h",或者定义继承关系就足够了child.h

不,您不需要#include "parent.h" child.cpp.#include "child.h" child.cpp就足够了."parent.h"的内容在child.cpp中可用,因为child.h已经#include "parent.h"

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

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

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