下面是关于C++的标识符的作用域与可见性学习记录,仅供参考

标识符的作用域与可见性

  • 作用域是一个标识符在程序正文中有效的区域。

  • 作用域分类

    ①函数原型作用域

    ②局部作用域(快作用域)

    ③类作用域

    ④文件作用域

    ⑤命名空间作用域

函数原形作用域

  • 函数原型中的参数,其作用域始于"(",结束于")"。

  • 函数原形作用域举例

double area(double radius);

局部作用域

  • 函数的形参、在块中声明的标识符;

  • 其作用域自声明处起,限于块中。

  • 局部作用域举例

1 void fun(int a) {
2 int b = a;
3 cin >> b;
4 if (b > 0) {
5 int c;
6
7 ......
8 }
9 }

类作用域

  • 类的成员具有类作用域,其范围包括类体和非内联成员函数的函数体。

  • 如果在类作用域以外访问类的成员,要通过类名(访问静态成员),或者该类的对象名、对象引用、对象指针(访问非静态成员)。

文件作用域(静态作用域)

  • 不在前述各个作用域中出现的声明,就具有文件作用域,这样声明的标识符其作用域开始于声明点,结束于文件尾。

可见性

  • 可见性是从对标识符的引用的角度来谈的概念

  • 可见性表示从内层作用域向外层作用域“看”时能看见什么。

  • 如果标识在某处可见,就可以在该处引用此标识符。

  • 如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。

  • 对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。

例如

 1 #include<iostream>
2
3 using namespace std;
4
5 int i; //全局变量,文件作用域
6
7 int main(void)
8 {
9 i = 5;
10 {
11 int i; //局部变量,局部作用域
12
13 i = 7;
14 cout << "i =" << i << endl;
15 }
16 cout << "i= " << i <<endl;
17 return 0;
18 }

运行结果

1 i=7 2 i=5

最新文章

  1. web前端面试题汇总
  2. umask
  3. CPU介绍
  4. Django admin 显示图片
  5. (基础篇)php中理解print EOT分界符和echo EOT的用法区别
  6. struts框架学习过程中的问题
  7. 一些常用的Git命令
  8. 修改dll版本号处理未能加载“******”,或找不到动态链接库依赖的项
  9. C语言学习的记忆
  10. uva 11400 Problem F Lighting System Design
  11. ASP.NET Web API下的HttpController激活:程序集的解析
  12. python 语法笔记(一)
  13. web正则表达式与示例
  14. mac用pecl安装swoole可能出现的报错及解决办法
  15. WEB服务器与应用服务器的区别
  16. Shell-8--数值运算及处理
  17. vb.net 日期時間
  18. python基础学习第六天
  19. windows多线程同步--信号量
  20. 两种方法设置nginx并发限制下面的白名单策略

热门文章

  1. gym101002K. Inversions (FFT)
  2. 西南民族大学第十二届程序设计竞赛(同步赛) A.逃出机房 (bfs)
  3. JavaScript——匿名函数和闭包
  4. SSH服务连接
  5. Linux系统SCSI磁盘扫描机制解析及命令实例
  6. OpenStack-知识点补充
  7. 部署 WordPress 和 Wecenter
  8. C++ 指针 new delete int*与string
  9. python3基本数据类型补充
  10. u-boot 移植 ---&gt;3、S5PV210启动序列