C++中,每个名字在使用之前必须被声明,如果在main之前没找到这个名字的声明,就会产生一个编译错误.
C++中,每个名字都有一个上下文(context),这就是域的概念.
C++支持3种形式的域:
1.局部域:
包含在函数定义或函数块中的程序文本部分.
2.名字空间域:
不包含在函数声明,函数定义,类定义中的程序文本部分.
最外层的名字空间域是全局域
3.类域
每个类定义都引入了一个独立的类域
全局域内的函数声明将引入全局函数,而全局域内的变量声明将引入全局对象
全局对象是一个运行时实体,它在程序的整个执行过程中都存在.它占据的存储区的生命期从程序启动开始,到程序终止时结束.
全局对象和(非inline)全局函数在一个程序中或者只有一个定义(或者有多个完全相同的定义),这称为"一次定义法则(ODR)".
inline函数在一个程序中可以被定义多次.
局部域中的变量声明引入了局部对象,有三种局部对象:自动对象,寄存器对象,局部静态对象.
自动对象生命期从被调用时开始,到函数结束为止.
寄存器对象是一种自动对象,支持对数据的快速存取.
局部静态对象在程序的整个执行期一直存在.
除全局对象,局部对象之外的第3种对象--动态分配对象, 允许程序员完全控制它的生命期.
using namespace <已定义的名字空间> 可以无需名字空间修饰符而直接访问名字空间内的名字
阅读(640) | 评论(0) | 转发(0) |