我们知道,如果局部变量和全局变量同名,在局部作用域内只有局部变量才起作用。在C++中可通过使用作用域限定符“::”来标识同名的全局变量。 int amount=123; // 全局变量 void main() { int amount=456; // 局部变量 cout::amount,; // 输出全局变量 coutamount,; // 输出局部变量 ::amount=789; // 访问全局变量 cout::amount,; // 输出全局变量 coutamount\n; // 输出局部变量 } 程序输出:123,456,789,456 2.6.3 作用域限定符:: 重点 在一个大型C++程序中,全局性的标识符存在重名的可能。为了避免全局标识符同名而引起的冲突,C++提出了命名空间(namespace)的概念。 所谓命名空间,是指标识符的各种可见范围,利用命名空间可以通过创建作用范围来对全局命名空间进行分隔。如果没有命名空间,这些变量、函数和类都存在于同一个全局命名空间中,可能会产生冲突。 一个命名空间确定了一个命名空间作用域。 2.6.4 命名空间 重点 命名空间声明的基本形式: namespace 命名空间名 { 变量声明 函数声明 类声明 … } 例如: namespace NS_A { int m, n; int func1() {return m+n; } void func2() { coutfunc1()endl; } } 命名空间声明的使用 在一个命名空间中声明的成员在该命名空间内可以被直接使用,不需要任何限定性修饰符。 命名空间中的成员主要是在该命名空间外被使用,必须有相应的使用规则。C++提供两种方法,实现在命名空间外使用其中的成员。 一种方法是在成员前面加上命名空间名和作用域限定符(::),如下所示: NS_A::m=15; NS_A::n=20; NS_A::func1(); 命名空间声明的使用 一种方法是利用using语句,using语句有以下两种方式: using namespace 命名空间名; using 命名空间名::成员标识符名; 第一种形式就是开放整个命名空间,该命名空间中的所有的成员都暴露于当前作用域中,即该命名空间中的所有成员在当前作用域下可以直接使用。第二种形式只是让一个命名空间中指定的成员暴露于当前作用域中,即只有该成员在当前作用域下可以直接使用。 例如: using NS_A; // 所有NS_A的成员当前都是可见的 using NS_A::m; // 只有m当前是可见的 using NS_A::func1; // 只有func1()当前是可见的 C++还支持一种匿名的命名空间,用于声明只有在当前文件中才可见的标识符。只有在声明这个匿名命名空间的文件中,命名空间中的成员能被使用。 匿名命名空间的声明与一般命名空间的声明形式相同,只是不要指定命名空间名。 例如: namespace { int m, n; int func1() {return m+n; } void func2() { coutfunc1()endl; } } 匿名的命名空间 标准C++库都定义在一个名为std的命名空间中,标准C++库中的变量、函数都属于命名空间std,如输入、输出流cin、cout等。 如果使用语句using namespace std,对std成员的引用无需再进行命名空间名限定,直接使用其中的成员,如直接使用cin、cout。注意,为了区别以前的库,标准C++库的头文件一般没有h后缀,如iostream。 如果不使用语句using namespace std,并且仍然使用标准C++库,就必须加上std命名空间限定,即: std::cin std::cout std命名空间 与变量类似,函数也有存储类型,不同存储类型的函数具有不同的作用域,在不同的范围为其他函数所调用。函数按其存储类型分为内部函数(static类型)和外部函数(extern类型)两类。 内部函数只能被同一个源文件中的函数所调用,而外部函数可以被其他源文件中的函数所调用。没有定义存储类型的函数都默认为外部函数。调用外部函数前必须先进行外部函数的声明。 2.6.5 函数的存储类型 File1.cpp源文件: int YourFun(int x , int y) { int temp; temp=x+y; return temp; } 例 定义并调用一个外部函数。在源文件File1.cpp中定义函数YourFun(),而在源文件File2.cpp中
您可能关注的文档
- 生产部主管培训资料剖析.ppt
- 创新思维训练讲述.ppt
- 生产财务基础培训剖析.ppt
- 第2章80C51的结构和原理m讲述.ppt
- 期货交易的基差原理及应用(曹胜)讲义.ppt
- 第2章Android开发环境讲述.ppt
- 新版长安汽车质量条款交流会讲义.ppt
- 第2章ArcGIS快速入门讲述.ppt
- 超大型项目施工新技术02讲述.ppt
- 护士长职责(共14张)讲义.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 新媒体短视频制作与剪辑.pptx VIP
- 新版河北农业大学农艺与种业考研经验考研参考书考研真题.docx VIP
- 新版河北农业大学农艺与种业考研经验考研参考书考研真题.docx VIP
- 面向产业的算法治理研究(2025年).pptx
- 梵音入汉:佛经汉译对汉语演进的多维影响.docx
- 小学低段音乐课堂管理方法的研究课题资料(包含申请表、开题报告、实施方案、结题报告等).pdf VIP
- 2026《隧道贯通误差预计计算案例》4000字.docx
- 2022-2023学年北京市丰台区高二(下)期末数学试卷(附答案详解).docx VIP
- 5m盐酸溶液的配制 -回复.pdf VIP
- 2026年新疆工程学院辅导员招聘备考题库最新.docx VIP
原创力文档

文档评论(0)