0

嗯,这是一个非常琐碎的问题。但我想知道是否可以将多个类放入一个头文件/源文件中。我经常看到,对于每个类,都有另一个头文件和另一个源文件,就像在 Java 中一样(不仅按照惯例......)

我看到了这里的起起落落:一方面,您可能希望在一个地方有一些相关的课程进行编辑,因为大型项目有时需要您搜索一下。另一方面,更多的文件使单个文件不那么重,因此您不必向下滚动数以千计的行来找到您正在搜索的方法。

现在公约对此有何看法?

[例子]

目前我在一个文件中有 3 个类:一个服务器、一个用于服务器的 ClientHandler 和一个 ServerManager。服务器管理连接,ClientHandler 管理每个客户端的所有进出流量,ServerManager 包含一些我需要运行服务器的逻辑。

[编辑]对我的英语能力要温柔,我是外国人;)

4

2 回答 2

2

每个类都有自己的标头/实现对被认为是一种很好的形式。

最令人信服的原因(对我来说)是文件以它们包含的类命名。这使得在代码中找到正确的声明文件变得很容易。如果一个文件中有多个类型,它就会变得更难命名,因此也更难维护。

然而,有时它并不是那么明确。“主”类可能有一些其他支持类,它们肯定是其接口的一部分(在 Herb Sutter 的接口意义上),但不属于嵌套类型。这应该很少见,但这种情况可能证明每个文件有多个类是合理的。

如果您费尽心思抽象出概念(例如在您给出的示例中),为什么不多做一点并将它们放在自己的文件中呢?你为此感谢自己!

于 2013-08-27T15:15:24.177 回答
1

除了常识,没有真正的规则。如果两个类紧密相连,通常将它们放在同一个标​​题中。当然,并非 C++ 中的所有东西都是一个类。自由函数可以根据看起来最合乎逻辑的东西分组在各种不同的标题中。

此外,头文件和源文件之间并不总是一对一的关系。如果您的类是模板,则可能根本没有源文件。另一方面,如果您正在编写一个将被广泛使用的库,并且该类不是多态的,您可能希望将每个函数放在一个单独的源文件中。

而且很多类是直接在源文件中定义的,而不是在头文件中。

于 2013-08-27T15:19:39.177 回答