8.7 组织程序代码
在上一个示例中,我们第一次将程序代码分散在多个文件中。这种方式不仅在C++(www.cppentry.com)应用程序中是通常的惯例,而且在Windows编程(www.cppentry.com)中也必不可少。即使最简单的程序所包含代码的绝对体积,也迫使我们将程序分为若干可使用的代码块。
正如上一节讨论的那样,C++(www.cppentry.com)程序中有两种基本的源代码文件:.h和.cpp文件,图8-14说明了这一点。
构成程序的是对应于函数定义的可执行代码。另外,还有一些要正确编译可执行代码所必需的定义,它们是全局常量和变量、数据类型(包括类、结构和联合)以及函数原型。可执行的源代码存储在扩展名为.cpp的文件中,其他定义存储在扩展名为.h的文件中。
我们可能时常需要在新项目中使用现有文件中的代码。这种情况下,我们只需给新项目添加.cpp文件即可,为此可以使用Project | Add Existing Item…菜单项。另外,右击Solution Explorer选项卡中的Source Files或Header Files,然后从上下文菜单中选择Add | Existing Item,亦可将文件添加到新项目中。我们不需要给新项目添加.h文件,不过如果希望.h文件立即出现在Solution Explorer窗格中,那么添加它们也无妨。作为我们指定的#include指令的结果,.h文件中的代码将被添加到需要它们的.cpp文件的开始部分。我们需要#include指令来嵌入包含标准库函数和其他标准定义的头文件,以及我们自己的头文件。Visual C++(www.cppentry.com) 2008能够自动记住所有这些头文件,并允许我们在Solution Explorer选项卡中查看它们。正如在上一个示例中看到的那样,我们还可以在Class View选项卡中查看类定义以及全局常量和变量。
|
| (点击查看大图)图 8-14 |
在Windows程序中,还有其他几种用于说明像菜单和工具栏按钮这样一些对象的定义。这些定义被存储在扩展名为.rc和.ico的文件中。正如.h文件一样,这些.rc和.ico文件也不需要显式添加到项目中,因为需要时Visual C++(www.cppentry.com) 2008将自动创建并跟踪它们。
命名程序文件
前面曾经说过,无论类的复杂性如何,我们通常都应该将类定义存储在文件名基于类名的.h文件中,将在类定义外部定义的函数成员的实现存储在同名的.cpp文件中。以此为根据,CBox类的定义出现在名为Box.h的文件中。同理,类的实现存储在Box.cpp文件中。我们在本章前面的示例中没有遵守这项约定,因为那些示例非常短小,而且名称由章编号和章内编号构成的示例更容易引用。无论程序的大小如何,既然以这种方式组织代码是必要的,那么从现在开始,养成创建.h和.cpp文件来容纳程序代码的习惯应该说是个好主意。
将C++(www.cppentry.com)程序分为.h和.cpp文件是一种非常方便的方法,使我们很容易找到任何类的定义或实现。如果使用的开发环境没有包括Visual C++(www.cppentry.com)提供的全部工具,则上述优点更加明显。只要知道类名,就能直接找到想要的文件。但这条规则不是刚性的。有时候,我们需要将一组紧密相关的类集中到一个文件中,并以类似的方式将它们的实现也集中到一起。但无论怎样选择组织文件的方式,Class View都将显示出所有的类以及各个类的全部成员,这一点可以从图8-15中看出。
在此对Class View窗格的大小作了调整,以便使项目中的所有元素都可见。在图8-15中,我们可以看到上一个示例中类以及全局函数和变量的详情。正如前面曾提到的那样,双击树中任意一项将直接进入相关的源代码。
|
| 图 8-15 |