C++的标识符的作用域与可见性

  下面是关于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

(0)

相关推荐