功能范围是什么意思?

Swa*_*ari 6 c++ scope

功能范围是什么意思?

我理解变量的范围.当我们讨论函数的范围时,它是指结构(类)中的函数还是我们在main()C/C++程序中调用的常规函数​​的范围?

Mar*_*k B 6

函数可以具有全局,名称空间,类(在这种情况下通常称为成员)或本地(在另一个函数内)作用域.他们也可以static给他们内部链接或在匿名命名空间内,使他们在翻译单元外无法访问(同时仍然具有外部链接,因此它们可以用作模板参数).


Mik*_*our 6

简而言之,范围是可以声明名称的区域.在范围内声明的名称可在该范围内访问,在某些情况下也可从外部访问.

(为了迂腐准确,这实际上是一个声明区域,名称的范围是程序中名称有效的部分.它从声明的地方开始,包括该区域的其余部分,有时还有一些其他地区.)

范围由名称空间,类和复合语句(即包围的代码语句块{})引入.最后一个包括函数体.

大多数对象和函数都有名称,每个名称都在一个范围内.

所以"函数的范围"可能意味着两件事:函数体的定义范围,其中声明了局部变量; 或声明函数名称的范围(类或命名空间).

更新:你说你的意思是函数名称的范围.这总是在宣言后立即开始; 它结束的地方取决于声明的位置.

  • 如果它在命名空间内声明,它将持续到该命名空间关闭.如果稍后在同一个翻译单元中重新打开名称空间,那么它将返回到那里的范围.
  • 如果它在类定义中声明为成员函数,则作用域将持续到类定义的结尾.它也在任何派生类的定义范围内,也在该类或派生类的成员定义内.
  • 如果它在类定义中作为好友声明,或者在函数定义中声明,那么名称实际上是在周围的命名空间中声明的,并且范围与该情况相同.