C++鼓励在开发程序时使用多个文件,一种有效的组织策略是:使用头文件来定义用户类型,为操纵用户类型的函数提供函数原型;并将函数定义放在一个独立的源代码文件中。头文件和源代码文件一起定义和实现了用户定义的类型及其使用方法。最后,将mian()和其他使用这些函数的善书放在第三个文件中。
C++的存储方案决定了变量保留在内存中的时间(储存连续性)以及程序的哪一部分可以访问他。自动变量是在代码块中定义的变量,仅当程序执行到包含定义的代码块时,他们才存在,并且可见。自动变量可以通过使用存储类型说明符auto和register或者根本不使用说明符(与使用auto一样)来声明。register说明符提示编译器,该变量的使用频率很高。
静态变量在整个程序执行期间都存在,对于在函数外面定义的变量,其所属文件中位于该变量的定义后面的所有函数都可以使用它(文件作用域),并可在程序的其他文件中使用(外部链接性)。另一个文件要使用这种变量,必须使用extern关键字来声明他。对于文件间共享的变量,应在一个文件中包含去定义声明(不使用extern),并在其他文件中包含引用声明(使用extern)。在函数的外面使用关键字static定义的变量的作用域为整个文件,但是不能用于其他文件(内部链接性)。在代码块中使用关键字static定义的变量被限制在该代码快内(局部作用域,无链接性),但在整个程序执行期间,它都一直存在并且保持原值。
在默认情况下,C++函数的链接性为外部,因此可在文件间共享;但使用关键字static限定的函数的链接性为内部的,被限制在定义它的文件中。
名称空间允许定义一个可在其中声明标识符的命名区域。这样作的目的是减少名称冲突,尤其当程序非常大,并使用多个厂商的代码时。可以通过使用作用域解析操作符,using声明或using编译指令,来使名称空间中的标志符可用。