C++ 将代码移动到头文件

C++ 将代码移动到头文件,c++,header-files,C++,Header Files,我正在开发的程序涉及大量的用户输入数据。出于这个原因,我有很多函数,它们的目的仅仅是验证输入,并确保输入的格式/类型正确 首先,将代码移动到外部文件的最佳方法是什么?当我为我的项目设计自定义类时,我使用了.h和.cpp文件对来声明和实现函数;这同样适用于其他随机函数吗 其次,在什么情况下应该将代码移到文件之外?我可以很容易地将其全部包含在主文件中,但它看起来很凌乱。如果main文件太大,请将一些文件移出 如果可以重用这些函数,请将它们分离到单独的文件中。一个文件包含函数的定义或内容。另一个文件包

我正在开发的程序涉及大量的用户输入数据。出于这个原因,我有很多函数,它们的目的仅仅是验证输入,并确保输入的格式/类型正确

首先,将代码移动到外部文件的最佳方法是什么?当我为我的项目设计自定义类时,我使用了.h和.cpp文件对来声明和实现函数;这同样适用于其他随机函数吗


其次,在什么情况下应该将代码移到文件之外?我可以很容易地将其全部包含在主文件中,但它看起来很凌乱。

如果
main
文件太大,请将一些文件移出

如果可以重用这些函数,请将它们分离到单独的文件中。一个文件包含函数的定义或内容。另一个文件包含文件的声明(也称为原型、标题)


将代码提取到单独文件中的一个原因是,当您完成测试时,不需要重新编译单独的文件。链接器可以引用它们的对象文件状态。这加快了构建过程(和开发过程)。

如果这些“随机”函数是逻辑连接的(即它们都进行输入验证),那么我将创建一个
InputValidator
类(您必须创建一个.h和.cpp文件)。在您的应用程序main中(或者在您获得输入的任何地方)创建一个
InputValidator
实例,并调用它的方法来验证您的输入。如果您对该实例没有任何实际用途,则可以使方法
静态
,然后使用
InputValidator.MyMethod()
调用它们,而无需创建实例。

将其显示给其他人。如果他们开始尖叫,是时候对你的文件重新排序了。有人可能会说,任何一组具有类似用途的函数(如果你愿意的话,可以称为套件)都应该被分解到编译单元的一个单独模块中。在C++中,我们可以通过为函数创建新的命名空间,创建一个头文件,只包含它们的声明(当然在新的命名空间内)和包含实际定义的CPP文件。这与类方法类似,但我们使用名称空间来组织,而不是只使用静态方法的类,以避免混淆。是否有将这两个部分合并到单个文件中的情况?如果是这样,那么.cpp或.h是否更合适?@MichaelHang如果类非常小,您可以将其全部放在.cpp文件中。没有理由不这样做,但通常声明放在.h文件中,实现放在.cpp file.related问题中-如果创建“文件链”是合乎逻辑的,是否认为这种样式不好?例如,我有一个“menu.cpp”,它调用“buffer.h”文件中定义的函数,该文件反过来与“team”类交互。因此,“menu.cpp”包括“buffer.h”,而“buffer.h”又包括“team.h”……在一些商店中,是的,链接是不好的形式。我的规则是头文件应该只包含解析该文件中的函数声明所需的文件。如果
menu.cpp
需要
buffer.hpp
中的函数,则应包括
buffer.hpp
。如果
menu.cpp
需要
team.hpp
中的函数,则无论
buffer.hpp
是否需要它,它都应该包含
team.hpp