本文主要解释域的概念。
域名之所以存在,主要是为了让名字可以重复使用,大大节省了取名字的时间和精力。试想一下,如果要给每个数据选一个全新的名字,一两个就可以了,选了一两百个名字的时候,不知道选什么名字才不会重复。
如果你学过数学中集合的概念,用集合的思想来理解定义域是合适的。集合本身不需要重复,具有包含关系。
有三种域,我们需要先对它们有个概念:
命名空间域:函数声明、函数定义和类定义之外的程序文本统称为命名空间域,最外层的命名空间域称为全局命名空间域或全局域。
局部:包含在函数定义中的程序文本。
类域:包含在类定义中的程序文本。
让我们看一个例子:
在上面的例子中,主函数定义之外的部分是全局域,而主函数内部的部分是局部域。怎样才能区分外在和内在?寻找花括号。看花括号里面跟main,是函数定义里面,花括号外面是函数定义外面。
最终的输出结果是:
一个
2
可以看到,有两个int s1。为什么没有重复定义?因为第二个int s1语句位于嵌套域中,例如:
{
{
}
}
这里有两个域(见花括号),和,其中是的嵌套域,所以里有一个叫张三的人,里又可以有一个叫张三的人。可能有朋友会问,既然有两个人叫张三,程序怎么知道我指的是哪一个?答:中出现的张三是指第二张三。直到走出域,再写张三,指的是第一张三。