作用域与可见性

 

作用域与可见性

函数原型的作用域

函数原型中的参数,其作用域是与“(”,结束于“)”。

如,设有下列原型声明

double Area(double radius);

//Area就叫原型,radius 的作用域仅在于此,不能用于程序正文其他地方,因而可有可无

//作用分为太小了,只在参数声明的括号内起作用,所以可以直接写double Area (double)

块作用域

在块中声明标识符,其作用域声明初起,限于块中,作用范围只局限在“{”“}”之内

如:

 

  1. void fun(int a)
  2. {       /**b的作用域**/
  3.     int b(a);
  4.     cin >>b;
  5.     if(b>0)
  6.     {           /**C的作用域***/
  7.         int c;
  8.         …..
  9.     }
  10. }
类和文件作用域

类作用与作用与特定的成员名,类机器对象有特殊的访问和作用域规则,作用范围就是局限于类里面

 

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

 

可见性

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

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

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

 

标识符应声明在先,引用在后。

在同一个作用域中,不能声明同名的标识符。

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

对于2个套嵌作用域,如果在内层作用域内声明了外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。这个叫做 屏蔽

 

 

例:

  1. #include <iostream.h>
  2. int i;//文件作用域
  3. int main()
  4. {
  5. i=5;
  6.     {int i;//块作用域 i只作用于{}之内的
  7.     i=7;
  8.     cout <<””i=”<<i<<endl; 输出7
  9. }
  10.     cout <<”i=”<<i;//输出5
  11.     return 0;
  12. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值