Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

8.4 作用域

作用域(scope)是一个程序文本区域。每个名字都定义在一个作用域中,在声明点到作用域结束的区间内有效。例如:

名字在其声明的定义域嵌套的定义域中也有效。例如,上面代码中对f()的调用在g()的作用域中,此作用域嵌套于全局作用域。全局作用域不在任何其他作用域内。名字必须先声明后使用的规则在这里还是适用的,因此f()不能调用g()。

C++支持多种类型的作用域,帮助我们控制变量在哪里可用:

·全局作用域(global scope):在任何其他作用域之外的程序区域。

·名字空间作用域(namespace scope):一个名字空间作用域嵌套于全局作用域或另一个名字空间作用域中,参见8.7节。

·类作用域(class scope):一个类内的程序区域,参见9.2节。

·局部作用域(local scope):位于{...}大括号之间或函数参数列表中的程序区域。

·语句作用域(statement scope):例如,for语句内的程序区域。

作用域的主要作用是保持名字的局部性,使之不影响声明于其他地方的名字。例如:

下图描述了上面代码中的作用域信息:

这段代码中,f()里的x与g()里的x是不一样的。它们不会冲突,因为不在同一个作用域中:f()里的x在f的局部作用域中,而g()里的x在g的局部作用域中。位于同一个作用域中,不能共存的两个声明被称为冲突(clash)。类似地,在g()中定义、使用的f(显然)不是全局函数f()。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252