我正在使用C ++开发一个多继承项目。我有类定义(.h)和实现(.cpp)的单独文件。由于这是我第一次在C ++中使用继承(我们的其他任务已经在C#中),有些事情有点不清楚。
我需要在#include "parent.h"
中child.cpp
,还是在child.h
中定义继承关系就足够了,即:
class child : parent
{
// child class definition
};
我被一个自动提示警告,这可能是一个主观问题,所以让我明确一点:我问这是否是功能要求继承才能正常工作,而不是这是“良好形式”或其他任何方面。
答案 0 :(得分:6)
<强>问题强>
我需要
中定义继承关系就足够了#include "parent.h"
中的child.cpp
,还是在child.h
<强>答案强>
不,您不需要
,#include "parent.h"
中的child.cpp
。在#include "child.h"
中child.cpp
就足够了。由于"parent.h"
已有child.cpp
child.h
中提供了#include "parent.h"
的内容
答案 1 :(得分:2)
以防这一点不明确:
#include
执行简单的文本复制,不涉及其他逻辑。
所以不,没有必要。但原因并不是你已经定义了继承关系,而是因为
#include "parent.h"
中的child.h
已将parent.h
的文本复制到child.h
,然后#include child.h
复制child.cpp
,复制整个文本(包括parent.h
)那里。另一个包含冗余,如果没有包含保护,它甚至会导致编译器错误。
顺便说一下:概念上,您的编译器没有将头文件视为单独的实体。它只看到一个文本流,它是通过从cpp文件开始然后执行(递归)所有#include指令而产生的。