C++精进之路之路(九)内存模型和名称空间

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值