zoukankan      html  css  js  c++  java
  • C++之命名空间(End Chapter)

    C++之命名空间(End Chapter)

    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。是否还记得在C++的发展,特点和源程序构成 这一节中的示例里用到过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 <iostream>
    3
    4 #include "university.h"//加载头文件university.h
    5 usingnamespace Peking;//显式使用头文件university.h中的命名空间Peking
    6
    7 int main()
    8 {
    9 std::cout<<"世界大学排名(2010)"<<std::endl;
    10
    11 std::cout<<"北京大学:"<<rank<<std::endl;//rank等同于Peking::rank
    12 std::cout<<"清华大学:"<<Tsinghua::rank<<std::endl;//标识符rank前面加上命名空间Tsinghua以及作用域运算符"::"
    13
    14 return0;
    15 }
    复制代码

    结果:

      最后来说说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 <cstdio>//等同于C中的#include<stdio.h>
    2 #include <cstring>//等同于C中的#include<string.h>
    3 #include <cmath>//等同于C中的#include <math.h>
  • 相关阅读:
    pyftpdlib 搭建FTP服务器
    numpy 解一道简单数学题
    python 实现词云
    个人的毕业长足---- 暴走北京
    Tensorflow of GPU, hello fish by version 0.8.
    图像识别
    用一个Inception v3 架构模型实现简单的迁移学习(译:../tensorflow/tensorflow/examples/image_retraining/retrain.py)
    19.液晶屏的原理
    18.DMA-6410
    17.DMA-2440
  • 原文地址:https://www.cnblogs.com/honeybusybee/p/5280592.html
Copyright © 2011-2022 走看看