第九章 内存模型和名称空间

1、请不要将函数定义或变量声明放在头文件中。

2、头文件中常包含的内容有:函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数。

3、如果文件名包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找:但如果文件名包含在双引号中,则C++编译器将首先查找当前的工作目录或源代码目录。如果没有在那里找到头文件,则将在标准位置查找。

4、链接性为外部的名称可在文件间共享,链接性为内部的名称只能由一个文件中的函数共享。自动变量的名称没有连接性,因为它们不能共享。

5、自动变量的作用域为局部,静态变量的作用域是全局还是局部取决于它是如何被定义的。

6、在默认情况下,在函数中声明的函数参数和变量的存储持续性为自动,作用域为局部,没有链接性。

7、C++为静态存储持续性变量提供了3种链接性:外部链接性,内部链接性和无链接性。这3种链接性都在整个程序执行期间存在。如果没有显示地初始化静态变量,编译器将把它设置为0;

8、关键字static的两种用法:对于局部声明,以指出变量是无链接性的静态变量时,static表示的是存储持续性;而用于代码块外的声明时,static表示内部链接性。而变量已经是静态持续性了。

9、在每个使用外部变量的文件中,都必须声明它。为满足C++有单定义规则,该规则指出,变量只能有一次定义。为满足这种需求,C++提供了两种变量声明,一种是定义声明,它给变量分配存储空间。另一种是引用声明,它不给变量分配存储空间,只引用已有的变量。引用声明使用的关键字为extern,且不进行初始化。否则声明为定义,导致分配内存。

10、在函数中声明的局部变量将隐藏在同一文件中声明的全局变量。

11、如果初始化了静态局部变量,则程序只在启动时进行一次初始化,以后再调用函数时,将不会像自动变量那样再次被初始化。

12、const全局变量的链接性为内部的。但可以使用extern关键字来覆盖默认的内部链接性。

13、通常,编译器使用三块独立的内存:一块用于静态变量(可再细分),一块用于自动变量,另一块用于动态变量。

14、void的字面意思是“无类型”,void* 则为“无类型指针”,void * 可以指向任何类型的数据,无需进行强制类型转换。

15、名称空间可以是全局的,也可以位于另一个名称空间中,但不能位于代码块中。因此,在默认情况下,在名称空间声明的名称的链接性为外部的。

16、C++提供了两种机制(using声明和using编译指令)来简化对名称空间中名称的使用。using声明(由被限定的名称和它前面的关键字using组成)使特定的标识符可用,using编译指令(由名称空间名和它前面的关键字using namespace组成)使整个名称空间可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值