使用继承时是否需要“#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 指令生成的。
我正在使用 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"
inchild.cpp
, or is it sufficient to have defined the inheritance relationship inchild.h
回答
No, you don't need to
#include "parent.h"
inchild.cpp
. It is sufficient to#include "child.h"
inchild.cpp
. The contents of"parent.h"
are available inchild.cpp
sincechild.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 指令生成的。