编写更多重构友好的C ++
在C ++中,你不具备在所有使用页眉。您可以像使用C#或Java一样在一个文件中定义整个对象。C开发人员通常只会将外部调用保留在头文件中。所有内部调用都将在.c文件中定义。同样,您可以为类/接口(纯虚拟抽象类)/ etc保留C ++ .h文件。旨在在DLL之外共享的文件。对于内部类/结构/接口等,您只需包含所需的.cpp文件:
#include<myclass.cpp>
这似乎不是最受欢迎的方法,但它是合法的C ++。您的所有内部代码绝对有可能。这允许内部代码和类集进行更大的改变,同时为库/可执行文件之外的代码提供更稳定的接口。
将整个班级放在一个文件中将使您更轻松地完成自己想要的事情。它不会解决重命名方法以及必须搜索该方法被调用的每个位置的问题,但是它将确保您拥有更多可理解的错误消息。没有什么比让标头以一种方式声明方法更糟糕了,但是您以不同的方式实现它。其他调用头文件的代码将正确编译,并且您将获得链接异常,而实现文件将是抱怨该方法未定义的文件。当您在实际的类声明中定义每个方法时,无论包含哪个文件,都将得到相同的错误消息。
您可能还想看一下这个问题:C ++的良好重构工具
C / C ++如何解析头文件/实现文件
在基础C级别上(并且C ++是在此基础上构建的),头文件声明了函数/结构/变量的承诺,该承诺足以允许编译器创建目标文件。类似地,C ++头文件声明了函数,结构,类等的承诺。编译器使用此定义在堆栈中保留空间等。
.c或.cpp文件具有实现。当编译器将每个实现文件转换为目标文件时,存在未实现概念(在标头中声明的内容)的钩子。链接器将挂钩与其他目标文件中的实现联系起来,并创建一个包含所有代码(共享库或可执行文件)的较大二进制文件。
VS特定
至于使用Visual Studio中的工具,有一些向导可以使事情变得简单一些。新的类向导将创建匹配的头文件和实现文件对。甚至有一个类浏览器功能,将允许您声明新方法。它将在.cpp文件的标头和实现存根中注入定义。Visual Studio拥有这些功能已有十多年了(只要我使用过它们)。