• c++ --作用域与可见域


    专题--作用域与可见域

    一、作用域  

      c++作用域可分为5类:函数原型作用域、块作用域、类作用域、文件作用域和全局(程序)作用域(跨文件)。

    1. 函数原型作用域(最小的作用域)

      函数原型:int func(int x); 这是一个函数声明,函数形参x 的作用域就时所谓的函数原型作用域。

    2. 块作用域

      一对大括号 { ... } 内的一段程序,块中声明的标识符作用域就是块作用域。

    3. 类作用域

      类成员的作用域。

    4. 文件作用域(static

      全局静态变量具有全局作用域,从声明处开始,到文件(.cpp文件)结尾处结束。

    5. 全局(程序)作用域(extern

      全局变量具有全局作用域,只要在使用前对其进行声明(可定义性声明/引用性声明),便可在程序(有若干个文件组成)的任意位置使用全局变量。

    二、可见域

      作用域指的是变量理论上有效的源代码区域,而可见域指的是该变量实际的内存区域。如果没有屏蔽发生,可见域和作用域应该是等价的

      只有在可见域内才能对变量进行合法的访问。

      引用声明不能提供全局可见性(不具备跨文件性质),这意味着,在使用全局变量之前,必须在当前文件或当前块中进行引用声明。

      内部静态变量(局部static)的作用域、可见域及屏蔽法则和自动变量一样,但外部静态变量需要注意:在一个文件中声明的外部静态变量(全局static),将屏蔽其他文件中定义的同名全局变量。但是,不允许在同一个文件中定义同名的全局变量和外部静态变量

      默认情况下,函数是全局的,可以在不同的文件中共享。和全局变量一样,使用函数前必须要对其进行声明(包含有函数声明的头文件)。

      可使用static关键字将函数声明为文件内部的,这样,只能在本文件中使用该函数,在函数定义和声明中都要使用static关键字。static函数将屏蔽其他文件中外部定义的同名函数


  • 相关阅读:
    SpringBoot项目maven 打包时跳过测试
    scss 学习笔记
    万事都源于一个字:缘
    H To begin or not to begin 题解(思维)
    条件 题解(bitset优化floyd)
    Dima and Salad 题解(01背包变形)
    P1052 [NOIP2005 提高组] 过河 题解(dp+数论优化)
    A Simple Math Problem 题解(数论)
    威佐夫博弈
    P3951 [NOIP2017 提高组] 小凯的疑惑 题解(数论/结论题)
  • 原文地址:https://www.cnblogs.com/cygalaxy/p/7103674.html
Copyright © 2020-2023  润新知