为什么要使用多个头文件? .CPP涉及. < P>除了所有已发布的答案之外,您还可以考虑C++有一个你所使用的或付费的哲学。你不用的东西你不用付钱

为什么要使用多个头文件? .CPP涉及. < P>除了所有已发布的答案之外,您还可以考虑C++有一个你所使用的或付费的哲学。你不用的东西你不用付钱,c++,C++,是的,您可以将所有内容都放在一个头文件中。但是,随着项目的发展,该头文件很快就会变得不可维护,编译速度也很慢。您可以将所有内容都放在一个头文件中。您甚至可以将整个程序放在一个文件中 将内容分离为不同的小文件的好处是,您可以一次编译小部分,并且只需要重新编译那些组件已更改的部分。您还可以将公共代码放入单独的文件中,并使用来自单独项目的文件,而无需跨项目复制粘贴代码。因此,如果您发现一个bug,您可以一次性修复它,并且您的所有项目都会从该修复中受益 为什么不能将所有内容都放在一个头文件中 如果将所有

是的,您可以将所有内容都放在一个头文件中。但是,随着项目的发展,该头文件很快就会变得不可维护,编译速度也很慢。

您可以将所有内容都放在一个头文件中。您甚至可以将整个程序放在一个文件中

将内容分离为不同的小文件的好处是,您可以一次编译小部分,并且只需要重新编译那些组件已更改的部分。您还可以将公共代码放入单独的文件中,并使用来自单独项目的文件,而无需跨项目复制粘贴代码。因此,如果您发现一个bug,您可以一次性修复它,并且您的所有项目都会从该修复中受益

为什么不能将所有内容都放在一个头文件中

如果将所有内容都塞进一个头中,对该头的每一次更改都会导致重新编译包含该头的每个文件。在你的情况下,这将是整个项目

当您有许多小文件并且只在绝对必要时才包含它们时,管理项目就更容易了

这里的关键词是模块化:

模块化是系统组件的分离和重组程度


正如其他人已经提到的,您可以在单个文件中编写程序。此外,您可以将其写在一行中。但是,您不这样做,因为这样将很难分离和重新组合此程序的各个部分,更不用说在它不编译时调试它了。

存在用于组织的头文件

对于一个非常简单的项目,一个头文件就可以了。您甚至可以根本不使用头,而只将所有内容写入一个文件中

但是,一旦您发展到一个更大的项目,这个项目充满了并行系统、在多个上下文中使用的类,或者仅仅使用第三方库(如OpenSSL或MySQL),您就不能简单地期望将所有这些代码放在一个包含数百万行代码的文件中

您可能还想知道,为什么不将项目中所有和任何必需的标题放在一个“common.h”中,然后将其包含在每个
.cpp

答案是因为每个
.cpp
都是单独编译的,因此,如果您将每个
.cpp
的标题限制为只包含它所需的标题,则会减少生成的
.obj
大小和编译时间


此外,每次修改任何标题时,都会被迫重新编译整个项目,而不是只编译> .CPP涉及.

< P>除了所有已发布的答案之外,您还可以考虑C++有一个你所使用的或付费的哲学。你不用的东西你不用付钱

如果我的应用程序需要(比如)复数,那么我会继续使用
#包括该功能。如果我不需要它,那么我的代码就没有理由知道这样的概念存在

当我确定我为给定类型的应用程序反复包含相同的头文件时,我创建了一个包含include的主头文件,我只是
#include

例如:

// @file  project.hpp
// @brief provides all the functionality required by `project`
#include<library1.hpp>
#include<library2.hpp>
#include<library3.hpp>
// any type definitions go below this line
/@file project.hpp
//@brief提供`项目所需的所有功能`
#包括
#包括
#包括
//任何类型定义都在这一行下面
然后,在我的项目中

// @file  project.cpp
// @brief Implements `project`
#include<project.hpp>
// go ahead and implement project
/@file project.cpp
//@brief-Implements`项目`
#包括
//继续实施项目

其他库,如
boost
通常提供一个“主”包含文件,如上文所述,以简化对库的使用。

不清楚“一切”是什么意思。出于同样的原因,你不会将所有文件放在桌面上,也不会将所有电子邮件放在收件箱中。