C ++约定:标题和类的结构

时间:2013-08-27 14:56:55

标签: c++ coding-style conventions

嗯,这是一个非常微不足道的问题。但我想知道是否可以将多个类放入一个头/源文件中。我经常看到每个类都有另一个标题和另一个源文件,就像在Java中一样(不仅仅是公约...)

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

现在公约对此有何评论?

[实施例]

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

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

2 个答案:

答案 0 :(得分:2)

每个类都有一个好的形式,它有自己的头/实现对。

最令人信服的理由(对我来说)是文件以它们包含的类命名。这样可以很容易地在代码中找到声明的正确文件。如果文件中包含多个类型,则名称变得更难,因此难以维护。

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

如果您已经解决了抽象概念的问题(比如您给出的示例),为什么不多花一点时间将它们放在自己的文件中呢?你为此感谢你!

答案 1 :(得分:1)

除了常识之外,没有真正的规则。如果两个班 密切相关,将它们放在同一个标​​题中是很常见的。 当然,并非C ++中的所有内容都是一个类;免费功能 根据可以根据不同的标题分组 什么似乎最合乎逻辑。

此外,两者之间并不总是存在一对一的关系 标头和源文件。如果您的课程是模板,那么 可能根本不是源文件。另一方面,如果你是 写一个将被广泛使用的图书馆,而课程不是 多态,你可能想要把每个函数放进去 一个单独的源文件。

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