什么是功能范围是什么意思?
我理解变量的作用域。 当我们谈到的功能的范围内,是它的结构内所提到的功能(类)或是否有余地,我们在调用的正常功能main()
一个C / C ++程序?
什么是功能范围是什么意思?
我理解变量的作用域。 当我们谈到的功能的范围内,是它的结构内所提到的功能(类)或是否有余地,我们在调用的正常功能main()
一个C / C ++程序?
函数可以有全局,命名空间,类(在这种情况下,通常称为成员),或本地范围(函数内)。 它们也可以是static
给他们内部链接或匿名命名空间内,使之成为一个翻译单元外部访问(同时还具有使它们可以被用来作为模板参数外部链接)。
宽泛地说,一个范围中的名字可以声明的区域。 在一个范围内声明的名称是范围之内到达,并在某些情况下,还从外面。
(要迂腐准确的,实际上是一个声明区 ,和一个名字的范围是其中的名称是有效的程序的一部分。它开始在那里的声明,包括该地区的其余部分,有时,一些其他地区。)
范围是由命名空间,类,和复合语句引入(即,由包围代码语句块{}
最后一个包括功能的机构。
大多数对象和功能有名称,并且每一个这些名字是一个范围内。
因此,“功能的范围内”可能意味着两件事情:要么通过函数体,在局部变量声明所界定的范围; 或范围(无论是一个类或一个命名空间),在该函数名被声明。
更新:你说你的意思是函数名的范围。 这总是宣布后立即开始; 在那里结束方式取决于该声明了。
是的,功能具有范围为好,但其范围通常比大多数变量更大。
在C [编辑:这是标签中的一个,当我写这篇],功能有全局作用域或文件范围。 全球范围适用于正常功能那是在整个程序中可见。 文件范围适用于您已标记为“静态”的功能,所以它只能在同一翻译单元内可见。
C ++使用这些名称稍有不同,但具有相同的基本概念。 它增加了命名空间中的实际名为“命名空间”和事物的形式struct
S / class
上课。 但有一个例外,在命名空间中的功能仅在该命名空间是可见的。 唯一的例外是,如果你定义一个friend
一个内部功能class
/ struct
:
class X {
friend void whatever(X const &) { do_something(); }
};
在这种情况下,即使该函数的内部定义X
,它的名字被注入到周围的空间中,因此它是X的外可见
我想在这里所指的是在标签 ( 标签是你用的什么范围goto
语句)是可见的。
也许这个文章也可以帮助你理解范围。 您还可以看看这对计算器的问题。