环顾不同的代码库,我看到了各种各样的风格:
头文件中定义的类“接口”和cpp文件中的实际impl。在这种方法中,标题看起来定义良好且易于阅读,但cpp文件看起来很混乱,因为它只是一个方法列表。
我看到的第二种方法就是将所有内容放在单个类cpp文件中。这些类文件包含类定义主体中的定义和实际方法。这种方法对我来说看起来更好(更像是Java和c#)。
我应该使用哪种风格?
答案 0 :(得分:7)
对于除了最简单的程序以外的所有程序,样式#2根本不可能。如果#include
.cpp
个文件包含来自多个其他.cpp
文件的函数定义,则定义会添加到多个目标文件(.o
/ .obj
)和链接器会抱怨冲突符号。
使用风格#1并学会忍受混乱。
答案 1 :(得分:4)
前者 - 头文件中的接口和实现文件中的类主体。你会发现这可以减少你在大型系统上工作时遇到的问题。
答案 2 :(得分:0)
由于您使用c ++标记,请转到第一种样式。我觉得它并不令人困惑,对于Java程序员来说,它可能看起来有所不同,但在C ++中,你总是会使用这种方法。
实际上在我最喜欢的IDE(MSVS)中,我打开头文件和cpp文件并排。使查找原型和类声明变得容易。
当你有十几节课时;十几个.h文件和另外十几个.cpp文件,将使您的工作更简单。因为,当你想要看到,类是什么时,你只需要打开相关的.h文件,看一下班级成员,或者简短的评论。你不需要涉及几行深度代码。
结论:您提供的样式选项仅适用于小代码,通常是单个文件,只有很少的方法等。否则,它甚至不是一个选项。 (@Thomas已经说明了#2甚至不是一个选项的原因)
答案 3 :(得分:0)
C ++不使用“接口”,它们使用类 - 基类/派生类。如果项目很小,我使用一个文件来定义类/及其实现方法,如果项目很大,我使用单独的文件。 在java中,我将它们打包到一个包中,然后在需要时导入它。
答案 4 :(得分:0)
标题(HPP):
标头包含代码的声明,特别是函数声明。从技术上讲,类在头文件中被定义,但同样,成员函数只是声明了。
其他文件中的代码仅包含此标题,并从那里保留所有必要信息。
实施(CPP):
实现包括函数,成员函数和变量的定义。
理由:
使用#style 1,即使对于简单程序也是如此。因此,您可以轻松学习如何使用。今天看起来可能看起来很不对劲,特别是在现代Multi-Pass-Compilers的背景下。但是单独的头文件甚至在今天都是有益的。关于下一个C ++ - Standard的谣言应该出现,据我所知,像符号导出(Java或C#)这样的东西是可能的。但是不要指责我!
注意:
- 在课堂内定义的成员函数默认为内嵌,通常您不希望这样
- 使用始终定义的警卫
答案 5 :(得分:0)
如果您正在开发大型项目,您会发现第一种方法可以帮助您。第二种方法可以帮助您完成小项目。随着您的项目变得越来越大,复杂性的管理是软件开发的一个大问题,第一种方法是更好的选择。
答案 6 :(得分:0)
我的工作是:
这样我得到: