作用域
作用域的基本分类:
-
局部作用域(local scope)
函数或lambda表达式(lambda函数)中声明的名字称为局部名字。局部名字的作用域从声明处开始,到声明语句所在的块结束为止。其中块(block)是指用一对{ }包围的代码片段。对于函数和lambda表达式最外层的块来说,参数的名字是其中的局部名字。
语句作用域和函数作用域也属于局部作用域 -
类作用域(class scope)
如果某个类位于任意函数、类和枚举类或其他名字空间的外部,则定义在该类中的名字称为成员名字或类成员名字。类成员名字的作用域从类声明的{开始,到类声明的}结束为止。 -
名字空间作用域(namespace scope)
如果某个名字空间位于任意函数、lambda表达式、类和枚举类或其他名字空间的外部,则定义在该名字空间中的名字为名字空间成员名字。名字空间成员名字的作用域从声明语句开始,到名字空间结束为止。名字空间名字不能被其他翻译单元访问。 -
全局作用域(global scope)
定义在任意函数、类、枚举类和名字空间之外的名字称为全局名字。全局名字的作用域从声明处开始,到声明语句所在的文件末尾为止。全局名字能被其他翻译单元访问。从技术上来说,全局名字空间也是一种名字空间。因此我们可以把全局名字看成是一种特殊的名字空间成员名字。
在编写代码时,在块内声明的名字能隐藏外层块及全局作用域