初学c++の命名空间

来源:互联网 发布:51单片机项目外包网 编辑:程序博客网 时间:2024/06/01 09:05

1、命名空间:
(1)、概念
命名空间将全局作用域分成不同的部分
不同命名空间中的标识符可以同名而不会发生冲突
命名空间可以相互嵌套
全局作用域也叫默认命名空间
(2)、原因
一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突;

(3)、代码(从代码中看使用方法)

#include <stdio.h>// **namespace**是一个关键字,用来定义命名空间namespace NameA{    int a;    void swap(int *a, int *b)    {        int temp = *a;        *a = *b;        *b = temp;    }//这个空间什么都可以包括,例如下边的结构体    struct A    {    };};int a;//全局变量aint main2_3(){    // 对命名空间中单个元素使用    using NameA::swap;    int b = 20;    int c = 30;    swap(&b, &c);    a = 90;//**这里是给全局变量赋值**,因为函数中并没有使用整个命名空间;    return 0;}// 命名空间的使用,1、域解析符::int main2_1(){    a = 10;   // 全局的a    NameA::a = 20;  // 使用命名空间 NameA中的变量a    int b = 1;    int c = 2;    NameA::swap(&b , &c);    printf ("b = %d, c = %d\n", b, c);    return 0;}// 2、使用 using 关键字int main2_2(){    // 表明使用命名空间NameA中的内容    // 但凡在这个声明之后使用的变量或者函数等,只要没指明具体的命名空间    // 都将使用NameA中的内容    // using 有效范围是当前的大括号{}    using namespace NameA;      NameA::a = 100;    // :: 不加前不加名字,代表使用默认的命名空间    ::a = 20;    func();    printf ("a = %d, %d\n", NameA::a, ::a);    int b = 10;    int c = 20;    // swap 没有指明命名空间    // 但是之前有了 using namespace NameA;  而 NameA中有 swaps    swap (&b , &c);    return 0;}

2、标准命名空间
(1)概念:
简单的说就是这个空间里边放了一些功能函数,调用之前需要声明std这个标准命名空间;声明的时候最好放在函数内部声明防止命名冲突
(2)代码:

// iostream C++控制台输入输出头文件#include <iostream>// 使用标准的命名空间,这边程序很短为了好看就放在函数外边;using namespace std;int main1_1(){    // cout 是标准输出,是一个类对象,在iostream里面定义    // 作用是向屏幕输出数据    // << 左移操作符,在这里被重载,意思是功能被重新定义    // 现在的功能是数据的流向,意思将数据从右边转移到左边    // <<  支持连续操作    // endl  表示换行    std::cout << "C++   hello world" <<  ",  adasdad" << std::endl;    return 0;}
原创粉丝点击