C++编程思想:第9章 命名与控制

需积分: 0 0 下载量 172 浏览量 更新于2024-08-01 收藏 624KB PDF 举报
"C++编程思想第9章:命名控制,主要探讨了`static`关键字在C++中的多重含义,包括静态存储和名字可见性控制,同时介绍了如何利用名字空间来管理名字访问。此外,还涉及C语言中的静态成员,特别是函数内部的静态变量及其行为。" 在C++编程中,`static`关键字扮演着重要的角色,它涉及到两个核心概念:静态存储和名字可见性。首先,静态存储意味着对象在程序启动时分配内存,并在整个程序执行期间保持不变,直到程序结束。与之相对的是动态分配(如在函数调用时在堆栈上创建的对象),这些对象在调用结束后会被销毁。 在C++的命名控制方面,`static`关键字用于限制名字的可见性。当在函数内部声明一个`static`变量时,这个变量仅在该函数内可见,不会污染全局命名空间。这意味着在函数多次调用之间,`static`变量的值会被保留,而不是每次调用时重新初始化。例如,下面的代码片段展示了`static`变量如何在函数调用之间保持状态: ```cpp static char* s; char next_char(char* str) { if (s == nullptr) { s = str; // 第一次调用时初始化 } if (*s) { return *s++; } else { return '\0'; // 结束标志 } } ``` 在这里,`s`是一个`static`指针,它在函数`next_char`首次调用时初始化,并在后续调用中保留其值,这样就可以跟踪字符串的遍历进度。 除了函数内部的`static`变量,`static`还有其他用途,例如在类中声明静态成员。静态成员变量属于整个类,而不是类的每个实例,这意味着所有对象共享同一份静态成员变量的拷贝。静态成员函数也不与任何特定对象关联,可以直接通过类名调用,无需实例化对象。 此外,C++引入了名字空间(namespace)的概念,这是另一种控制名字可见性的工具。名字空间可以避免不同模块之间的名字冲突,通过将相关联的函数和变量封装在不同的名字空间内,可以更有效地组织代码并提高可读性。 `static`关键字和名字空间是C++中控制名字可见性和存储管理的重要机制,它们帮助开发者更好地组织代码,防止命名冲突,并在函数调用之间保留状态。理解并熟练应用这些特性对于编写高效、可维护的C++程序至关重要。