>[info] # 作用域
**作用域**是标识符在程序中的有效范围,即可见性区域.
## **作用域类型**
局部作用域:局部变量 块语句{}
文件作用域:全局变量
函数作用域
函数原型作用域
类作用域
## **局部作用域**
- 当标识符的声明出现在由一对花括号括起来的一段程序(块)内时,该标识符的作用域从声明点开始,到块结束处为止.
- 如果在if语句和switch语句的条件表达式中声明标识符,则该标识符的作用域在该语句内.
- 在if_else分支语句内声明的标识符,其作用域在该分支内.
- 在for语句的第一个表达式中声明的标识符,其作用域在该语句内.
## **函数作用域**
- 标号是唯一具有函数作用域的标识符;
- go to语句和switch_case语句使用标号;
- 标号声明使得该标识符在一个函数内的任何位置均可见.
- go to或switch语句不应使控制从一个声明的作用域外跳到该声明的作用域内,因为这种跳转越过了变量的声明语句,使得变量不能被初始化.
- 局部变量不具有函数作用域.
## **函数原型作用域**
- 函数原型声明中所作的参数声明在此作用域中,该作用域开始于函数原型声明的左括号,结束于右括号.
- 如int MAX(int a,int b);中,参数a,b就具有函数原型作用域,即离开分号 **’;’** 后,参数a,b的作用域都将不存在,所以参数a,b可有可无,即可写成:
int MAX(int ,int);
- 建议:为了增强程序的可读性,保持良好的编程风格,一般应对程序中所出现的所有函数都要作函数原型声明.
## **文件作用域**
- 也称全局作用域,是在所有函数定义之外说明的,其作用域从说明点开始,一直延伸到源文件结束.
- 适用对象:全局变量,静态全局变量和静态函数.
- 作用域扩展: 全局变量本应是文件作用域的,但可经其它源文件中的extern声明,扩展其作用域至其它源文件中. 在头文件的文件作用域中所进行的声明,一旦该头文件被某个源文件嵌入(即包含),则声明的作用域也扩展到 该源文件中,直到该源文件结束,例如cout和cin.
- 介绍
- 编程设计语言
- 第一章 对C++的初步认识
- 1.2 最简单的C++程序
- 1.3 C++对C的补充
- 1.3.1 return
- 1.3.2 输入输出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定义常变量
- 1.3.5 函数原型声明
- 1.3.6 内置函数
- 1.3.7 函数重载
- 1.3.8 函数模板
- 1.3.9 有默认值的参数
- 1.3.10 作用域
- 1.3.11 const修饰指针
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 变量
- 1.3.15 字符串变量
- 第二章 类与对象
- 2.2 类的声明和对象的定义
- 2.3 类的成员函数
- 第三章 关于类和对象的进一步讨论
- 3.1 构造函数
- 3.1.1 对象的初始化
- 3.1.2 构造函数
- 3.2 析构函数
- 3.3调用析构函数和构造函数的顺序
- 3.4 对象数组
- 3.5 对象指针
- 3.6 共享数据的保护
- 3.7 对象的建立与释放
- 3.8 对象的赋值与复制
- 3.9 静态成员
- 3.10 友元
- 3.11 类模板
- 第四章 运算符重载
- 数据类型转换
- 运算符重载
- 重载流插入运算符和流提取运算符
- 第五章 继承与派生
- 继承与派生
- 第六章 多态性与虚函数
- 多态性
- 虚函数
- 纯虚函数与抽象类