数据的共享和保护机制是C++的重要特性之一。
1、标识符的作用域与可见性
作用域讨论的是标识符的有效范围,可见性是讨论标识符是否可以被引用。
a、作用域
作用域是一个标识符在程序正文中有效的区域。C++中标识符的作用域有函数原型作用域、块作用域(局部作用域)、类作用域和文件作用域。
1)函数原型作用域
它是c++程序中最小的作用域,在函数原型声明时形式参数的作用范围就是函数原型作用域。
如,double area(double radius),标识符radius的作用范围就在函数area形参列表的左、右括号之间。
2)块作用域
所谓块就是一堆大括号括起来的一段程序。在块中声明的标识符,其作用域从声明处开始,一直到块结束的大括号为止。具有块作用域的变量也称为局部变量。
3)类作用域
类可以被看成是一组有名成员的集合,类的成员M具有类作用域,对M的访问方式如下:
如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员M。
通过表达式x.M或者x::M。这正是程序中访问对象成员的最基本方法。
通过prt->M这样的表达式,其中prt为指向X类的一个对象的指针。
4)文件作用域
不在前述各个作用域中出现的声明,就具有文件作用域,这样声明的标识符其其作用域开始于声明点,结束于文件尾。比如全局变量。故具有文件作用域的变量也称为全局变量。
2、可见性
下面从标识符引用的角度来看,程序运行到某一点,能够引用到的标识符,就是该处可见的标识符。