企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一.标识符的作用域 1. **概念** 是 **标识符** 在程序中的有效范围,即可见性区域。 2. 局部作用域 + **对象** 局部变量 + **范围** + 定义点到定义它的语句块结尾。 + **这个特性与编译器有关** 在语句条件表达式中定义的变量,作用域在该语句内。 3. 文件作用域(全局作用域) + **对象** 全局变量、全局函数 + **范围** 定义点到文件结尾 4. 函数作用域 + **对象** 标号 + **范围** 整个函数(从函数名之后开始的所有实体) 5. 函数原型作用域 + **对象** 函数原型中的形参 + **范围** 定义点到原型结尾 6. 类作用域 + **对象** 类内声明的数据成员和成员函数。 + **范围** 类的大括号内、类外定义的成员函数(从函数名之后开始)。类外定义的成员函数的返回值不在此作用域内。 7. [$]命名空间作用域 + **有名的命名空间** + **范围** 命名空间内 + **对象** 命名空间的类、对象、函数、变量 + **无名的命名空间** + **范围** 文件内(只能在文件内使用) + **对象** 命名空间内的类、对象、函数、变量 8. [$]模板形参作用域 + **对象** 模板形参 + **范围** 从模板声明开始,到模板声明结束 + **特色** 类模板中,在类作用域内出现的类名,模板参数可以省略。 ## [$]二.拓展作用域的方法 1. `extern` 声明将其他文件的非静态变量和函数引入`extern` 声明所在的作用域。 2. 函数声明将函数引入函数声明所在的作用域。 3. `using` 声明将命名空间中的所有或某个标识符引入`using` 声明所在的作用域。对于函数来说,`using` 声明会将命名空间中的所有重载函数引入作用域。若作用域已有同名函数,则与已有函数形成重载。 4. 通过引入头文件,将头文件中的标识符引入全局作用域。