Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ (C+;+;)整个类在.h文件中?_C++_Header - Fatal编程技术网

C++ (C+;+;)整个类在.h文件中?

C++ (C+;+;)整个类在.h文件中?,c++,header,C++,Header,如果我正在创建一个小函数类,而这些函数做的不多,那么将它们全部放在头文件中是否可以接受?因此,对于一个特定的类,它只是一个没有.cpp的.h。是的,这是可以接受的。它一定会编译的。但是,如果它能使代码组织更干净,那么这也很好。出于必要,大多数模板定义已经是这样了,所以您没有做任何闻所未闻的事情。但是,该类依赖于其他类可能存在一些缺点。如果您最终不得不在使用该类的其他文件中包含整个定义,那么与仅具有简短的类声明相比,它可能需要额外的编译时间 如果这似乎是一个真正的问题,您可以测量编译时间 如果你能

如果我正在创建一个小函数类,而这些函数做的不多,那么将它们全部放在头文件中是否可以接受?因此,对于一个特定的类,它只是一个没有.cpp的.h。是的,这是可以接受的。它一定会编译的。但是,如果它能使代码组织更干净,那么这也很好。出于必要,大多数模板定义已经是这样了,所以您没有做任何闻所未闻的事情。但是,该类依赖于其他类可能存在一些缺点。如果您最终不得不在使用该类的其他文件中包含整个定义,那么与仅具有简短的类声明相比,它可能需要额外的编译时间

如果这似乎是一个真正的问题,您可以测量编译时间


如果你能得到一份副本,(和许多其他书籍)有一个关于源代码组织的详细章节,以及将代码分成.h和.cpp文件的具体好处。

是的,这是可以接受的。此外,如果您使用模板,并且没有支持导出的编译器,那么您就别无选择


但是,请注意,它会增加依赖性,从而降低编译速度。

如果您在将来的代码或项目中使用该头文件,并且希望与其他人共享该头文件,则可以。

取决于您链接的方式。为了避免看到诸如blah的重新定义之类的消息,以前在文件blah.h的第13行的定义只是将声明之外的所有内容都放在一个.cpp中。

这取决于您的目标

对于一个宠物项目来说,这是可以接受的,但任何事情都是可以接受的

对于一个真正的项目,你需要问自己一些问题:

  • 你几乎没有依赖关系吗?(是的)
  • 您的逻辑/实现是否可能经常更改?(否,或见下一个问题)
  • 多少取决于这门课?(不多或不多,但不会改变)
如果回答让你满意,那就继续吧

这主要是一个依赖关系管理的问题。通过将方法定义放在头中,它们很可能被编译器内联,这意味着每次它们更改时,您都必须重新编译依赖于该类的所有内容

模板是这样做的,但是模板通常很少有依赖项(其他包括),并且您相对被迫这样做(尽管您可以将非模板依赖的代码外部化以减少依赖项)

对于依赖关系管理最重要的真正的大型项目,我建议不要这样做。在这些项目中,稳定的ABI和促进二进制兼容更改的能力是解决问题的救命稻草,它们值得为开发人员带来“轻微”不便


在任何情况下,请不要在类中间定义方法。即使是内联的,也可以在类声明之后定义它们。这使得阅读它的人(几个月后你自己)更容易快速掌握接口。

IMO,如果你的方法大多是一行程序,在类中定义方法实际上不会分散很多注意力,有时会增加代码的易懂性;事实上,有人不想创建一个单独的.CPP文件的唯一原因是因为该类很小,方法都是琐碎的。但是,很难定义一个衬垫之间的界限,一个包裹的衬垫,因为它不适合屏幕,一个比包裹的衬垫短的两个衬垫。。。在那之后,是每个人的电话。但你不需要定义一个硬性的限制,只需跟随你的直觉。最后,编译器仍将生成相同或等效的输出。许多编程风格指南提倡一致性风格,只是因为一致性很容易量化,如果某些东西看起来总是一样的,那么它就是一致的;然而,在许多情况下,这种对一致性的痴迷是以忽视难以量化的潜在好处为代价的。可读性和可理解性不容易量化;因此,在风格指导方针中,通常会有侧线。