使用继承时,是否必须"#include"子类父类的头文件。 C++
When using inheritance is it necessary to "#include" the header file of child's parent class. C++
我正在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 指令生成的。
- 从父类方法返回子类对象
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 将父类对象强制转换为子类的问题
- 如何在C++子类中访问父类的私有变量
- 将父类的子类的数据复制到具有相同父类的另一个类
- 父类的私有函数会导致对具有相同名称和相似参数的子类中的公共函数的不明确调用
- C++ 将子类的对象添加到父类的向量中
- 为什么我的子类不继承父类的字符串?
- 文本冒险游戏 - 如何区分一种项目类型与另一种项目类型以及如何构建项目类/子类
- Arduino在子类中使用父类方法
- 如何调用传递给 JNI 'jobject' 的 Java 对象的子类/子类的方法
- 模型类/子类,其中子类类型在C++中先验未知
- 具有虚拟析构函数的基类子类中的默认析构函数
- 使用默认构造函数的父类;子类的析构函数意外调用
- Qt c++ 类 + 子类使用 Q_OBJECT 不起作用
- 提升 Python 包装的虚拟类 - 子类返回错误:与C++签名不匹配
- 宠物动物园C++/继承类/子类
- 模板基类子类的模板专用化
- 在c++中,如何确定一个类是否是继承链中的最后一个类/子类?它位于基类的另一端
- 如何使用模板类的模板类子类从哈希表实现哈希集