逐梦C++之一:命名空间

命名空间

1.命名空间来历(缘起)

命名空间的由来在百度百科中是这样说的,我觉得颇有道理,也容易令人理解:

命名空间是用来组织和重用代码的 。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的命名冲突问题。

这样我们就可以解决类似于“两个叫相同名字的人怎么区别”的问题,我们可以通过他们来自于哪个地方(即命名空间)来得到答案。比如,北京的张三,上海的张三,我们可以通过地域来区分这两个人。

2.命名空间定义

我们先入例子:
例1.1.1

#include <iostream>
using namespace std;

int main()
{
    cout<<"hello World!"<<endl;
    return 0;
}

using namespace std;这句话就是用来声明使用命名空间的。
当一个C++项目分给多个人做时,难免有时候大家会命名相同的变量,
比如张三在项目里命名了float类型的变量price,而李四命名了int类型的price,而在接下来的
项目中,如果不使用命名空间,你将无法确定price属于哪一个人命名的变量。所谓命名空间,就是
在系统分配给你的一个空间类定义属于你自己的变量名,当你要使用该空间的变量或者函数时,你
声明一下就可以了。
命名空间定义:

namespace 命名空间名{
    //命名空间的变量
    //.............
    //命名空间的函数
    //.............

}//(此处无分号)

例1.1.2

namespace hui{
    //命名空间的变量
    char sex;
    int age;
    //命名空间的函数
    void work();
    void out_age()
    {
        printf("hui::age=%d\n",age);
    }
}

3.命名空间的声明方式:

方式一:(使用命名空间中的单一元素<变量/函数>)
using 命名空间名::元素名;
ep:using hui::age;
方式二:(使用命名空间中的所有元素)
using namespace 命名空间名;
ep: using namespace hui;

4.综合的例子:

//==================================================
//程序描述:C++中的命名空间(防止命名冲突)
//Date:2016年1月8日   by  Ye_wolf
//备注:
//==================================================

//========================【头文件部分】=============================
#include <iostream>
#include <stdio.h>
using namespace std;//使用标准命名空间,如果接下来的的代码没有指定命名空间,皆默认为std命名空间

//========================【命名空间】==============================
//-----------------------------hui命名空间------------------------------
namespace hui{
    //命名空间的变量
    int age;
    //命名空间的函数
    void out_age()
    {
        printf("hui::age=%d\n",age);
    }
}
//-----------------------------yu命名空间------------------------------
namespace yu{
    //命名空间的变量
    int age;
    //命名空间的函数
    void out_age()
    {
        printf("yu::age=%d\n",age);
    }
}


//=========================【主函数】============================
int main()
{
    {
    using namespace hui;
    age=21;//该变量存在于hui命名空间
    out_age();
    }

    {
    using namespace yu;
    age=20;//该变量存在于age命名空间
    out_age();
    }

    cout<<"niqi"<<endl;//cout存在标准命名空间std中
    return 0;
}


运行截图:
命名空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值