1. 单独编译涉及工程实践(不易抽象总结)
2. 内存模型设计编译原理。(后续补充)
3. 名称空间
目的:解决多个库(空间)里重复的定义
a. 声明区域 -->可以在其中声明的区域
b. 潜在作用域 -->从声明点开始到声明区结束
C++定义了规则,使得每个函数中的局部变量不会
和另一个函数中声明的局部变量发生冲突
关键字 namespace 用来创建名称空间
例如 : namespace Jack
{
double pail;
void fetch();
}
namespace Jill
{
int pail;
double fetch;
}
名称空间可以是全局的(即为全局变量和全局函数),也可以是独立的局部名称空间
可以在文件后部分或者另一个文件中,再次使用名称空间(补充...目的)
namespace Jack
{
void fetch()
{
...
}
}
访问给定的名称空间里的名称:
例如: Jack::pail = 12.1;
Jack::fetch();
名称未被修饰,则为未限定的名称,被修饰(Jack::)称为限定的名称
4. C++提供两种机制来简化对名称空间的使用
a. using 声明
在代码块(或全局)中使用后,该名称不必再限定
例如:
..fun(..)
{
using Jill::fetch;
double fetch;
cin>>fetch;
}
b. using 编译指令
using namespace Jack;
那么对于代码块(全局)中,Jack中所有的名称都不必再加入限定
5. 名称空间的嵌套
namespace elements
{
namespace fire
{
int flame;
..
}
float water;
}
使用方法 using namespace elements::fire
可以在名称空间内使用 using 编译和声明
6. 未命名的名称空间
于是只属于该文件内,作用类似内部的静态变量
static int counts;
==
namespace
{
int counts;
}