作用域讨论的是标识符的有效范围,可见性讨论的是标识符是否可以被引用.二者相互联系又存在着很大差异.
作用域
作用域是标识符在程序中有效的区域.分为以下四种:
- 函数原型作用域
- 局部作用域
- 类作用域
- 命名空间作用域
1.函数原型作用域
即函数形参的作用范围,只在左右括号之间.例如:double area(double radius);
radius作为标识符,其作为形参的作用范围就是括号范围,标识符在此并不起作用,为了可读性一般都加上;
2.局部作用域
理解如图所示:
具有局部作用域的变量即为局部变量
3.类作用域
类X的成员m具有类作用域,对m的访问有三种方式:
(1)成员函数可以直接访问;
(2)x.m或者X::m(访问类的静态成员);
(3)通过ptr->m,ptr为指向类的对象指针.
4.命名空间作用域
namespace 命名空间名{
命名空间内的各种声明(函数声明,类声明,......)
}
具有命名空间作用域的变量即为全局变量.
可见性:外层标识符在内层不可见