功能范围是什么意思
What does scope of functions mean?
函数的作用域是什么意思?
我了解变量的范围。当我们谈论函数的范围时,它指的是结构(类)中的函数,还是我们在 C/C++ 程序main()
调用的普通函数的范围?
粗略地说,作用域是可以声明名称的区域。在作用域中声明的名称可以在该作用域内访问,在某些情况下也可以从外部访问。
(为了学究的准确,这实际上是一个声明区域,名称的范围是名称有效的程序的一部分。它从声明的位置开始,包括该区域的其余部分,有时还包括其他一些区域。
作用域由命名空间、类和复合语句(即用 {}
括起来的代码语句块)引入。最后一个包括函数的主体。
大多数对象和函数都有名称,并且每个名称都在作用域内。
因此,"函数的作用域"可能意味着两件事:要么是由函数体定义的范围,其中声明了其局部变量;要么是声明函数名称的作用域(类或命名空间)。
更新:你说你的意思是函数名称的范围。这总是在声明之后立即开始;它的结束位置取决于该声明的位置。
- 如果它是在命名空间内声明的,则它一直持续到该命名空间关闭为止。如果稍后在同一翻译单元中重新打开命名空间,则它会返回到该范围内。
- 如果它在类定义中声明为成员函数,则作用域将持续到类定义结束。它还在任何派生类的定义范围内,也位于该类或派生类的成员的定义范围内。 如果它在类定义中声明为
- 友元,或者在函数定义中声明,则名称实际上是在周围的命名空间中声明的,并且作用域与该情况相同。
函数可以具有全局、命名空间、类(在这种情况下通常称为成员)或本地(在另一个函数内)作用域。也可以通过为它们提供内部链接或在匿名命名空间内static
它们,使它们无法在翻译单元之外访问(同时仍然具有外部链接,因此它们可以用作模板参数)。
是的,函数也有作用域,尽管它们的作用域通常大于大多数变量的作用域。
在 C 中 [编辑:这是我写这篇文章时的标签之一],函数具有全局作用域或文件作用域。全局范围适用于在整个程序中可见的正常函数。文件范围适用于您标记为"静态"的函数,因此它仅在同一个翻译单元中可见。
C++对它们使用略有不同的名称,但具有相同的基本概念。它以实际命名为"命名空间"和struct
s/class
es的形式添加命名空间。除了一个例外,命名空间中的函数仅在该命名空间中可见。例外情况是如果您在class
/struct
中定义friend
函数:
class X {
friend void whatever(X const &) { do_something(); }
};
在这种情况下,即使函数是在 X
内部定义的,它的名称也会注入到周围的命名空间中,因此它在 X 之外可见。
我认为这里的意思是标签(标签是你与goto
语句一起使用的标签)可见的范围。
也许本文还可以帮助您了解范围。你也可以看看这个问题 堆栈溢出.
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?