博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++之命名空间(End Chapter)
阅读量:4663 次
发布时间:2019-06-09

本文共 1915 字,大约阅读时间需要 6 分钟。

http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/20/2146917.html

今天这一节,注意要讲C++中的命名空间和头文件的命名规则。也是C++这一基础系列的最后一节。首先感谢在学习C++的一路上,有这么多关注这系列的博友们的陪伴和帮助。正因为有了你们的建议和指导,使我对C++有了更深的认识和更大的兴趣。这个系列结束之后,我会继续学习和关注C++的一些实际应用。

  大家都知道一个大型软件通常是由多个模块组成的,这些模块往往是由不同的人合作完成,最后组成一个完整的程序。假如不同的人分别定义了函数和类,放在不同的头文件中,在主文件需要用到这些函数和类时,用#include命令行将这些头文件包括进来。但由于各个头文件是由不同的人设计的,可能在不同的头文件中会有相同的名字来定义函数或类,这样就会出现命名冲突的问题。同时如果在程序中用到第三方类库,也会有同样的问题。为解决这一问题,ANSI/ISO C++引入命名空间,即一个程序设计者命名的内存区域。程序设计者根据需要指定命名空间,并将命名空间中声明的标识符和命名空间关联起来,这样就保证不同命名空间的同名标识符不发生冲突。它的一般格式:

  namespace 命名空间名

  {

    标识符1;

    标识符2;

    ...

  }

花括号内是命名空间的作用域。其实在之前所有的章节中都用到过一个C++指定的一个标准命名空间std。是否还记得在这一节中的示例里用到过using namespace std语句,其含义就是使用标准命名空间std。它是单词standard的缩写,标准C++库中的所有标识符都在这个命名空间中,比如我们常用到的iostream头文件中的函数、类、对象等都在std命名空间中定义。如果要调用命名空间里的函数、类、对象等,有两种方法:(1)在原文件中使用"using namespace 命名空间名",再直接调用标识符;(2)在标识符前面加上命名空间以及作用域运算符"::";

自定义头文件university.h:

1 namespace Peking //声明命名空间Peking 2 {
3 int rank=47;//标识符 4 } 5 6 namespace Tsinghua //声明命名空间Tsinghua 7 {
8 int rank=54;//与Peking同名标识符 9 }

使用文件university.h及命名空间:

1 #include "stdafx.h"  2 #include 
3 4 #include "university.h"//加载头文件university.h 5 usingnamespace Peking;//显式使用头文件university.h中的命名空间Peking 6 7 int main() 8 {
9 std::cout<<"世界大学排名(2010)"<

结果:

  最后来说说C++中头文件的命名规则,因为C++是从C语言发展而来的,为了与C兼容,C++保留了C语言中的一些规定,其中就包括用.h作为后缀的头文件,比如大家所熟悉的:stdio.h、math.h和string.h等。但后来ANSI/ISO C++建议头文件不带后缀".h"。但为了使原来编写的C++的程序能够运行,在C++程序中的头文件既可以采用不带后缀的头文件,也可以采用C语言中带后缀的头文件。在C++中使用这两种形式的头文件都可以,只不过有几个注意点需要说明一下:(1)如果C++程序中使用了带后缀".h"的头文件,那么不必在程序中声明命名空间,只需要文件中包含头文件即可;(2)C++标准要求系统提供的头文件不带后缀".h",但为了表示C++与C的头文件既有联系又有区别,C++中所用头文件不带后缀".h",而是在C语言的相应头文件名之前加上前缀c:

1 #include 
//等同于C中的#include
2 #include
//等同于C中的#include
3 #include
//等同于C中的#include

转载于:https://www.cnblogs.com/honeybusybee/p/5280592.html

你可能感兴趣的文章
19. Remove Nth Node From End of List
查看>>
Struts2(三):新建Struts2工程
查看>>
数据库调优过程(一):SqlServer批量复制(bcp)[C#SqlBulkCopy]性能极低问题
查看>>
AS中jar包和aar包区别及导入导出
查看>>
Android系统备忘1
查看>>
tomcat配置
查看>>
C语言学习之路
查看>>
值-结果参数
查看>>
[Excel] C# ExcelHelper操作类 (转载)
查看>>
使用jsoup进行网页内容抓取
查看>>
深入理解JVM内幕:从基本结构到Java 7新特性
查看>>
[NodeJs]入门经典
查看>>
准确判断listview上下滚动
查看>>
codeforces666A
查看>>
比较真实的下雪效果
查看>>
MongoDB 3.2 从安装到使用。
查看>>
CFround#380 div2
查看>>
设计模式基础知识备忘
查看>>
中国国家气象局天气预报信息接口
查看>>
牛客寒假算法基础集训营2 处女座的砝码 (思维)
查看>>