C/C++学习之命名空间

C/C++学习之命名空间

上节我们介绍了打印方法与字符串常量。C/C++之字符串常量与打印语句
本节我们来介绍命名空间。

  • 为什么要使用命名空间:避免名字冲突

  • 假设一个项目由多个人开发,自己先写了一部分,想要描述一下中国的人口和首都,之后另外一个人也参与进这个项目,想描述一下日本的人口和首都。

    该处是由自己写的一部分,观察一下代码中的细节,稍后做分析:

    #include <iostream>
    #include <string>
    
    //人口
    float population = 14.1; // 单位:亿
    std::string capital = "北京";
    
    int main() {
    	std::cout << "首都:" << capital << std::endl;
    	std::cout << "人口:" << population << std::endl;
    }
    

    ​ #include < string>是字符串相关的头文件。

    ​ 上面是很简单的,float代表浮点型(小数)变量, string代表字符串变量。

    ​ 此时表示出结果很容易,并且显而易见。

  • 那么问题就来了,此时另外一个人如果也定义变量populationcapital那会不就混淆了吗,编译器可不知道该用哪个。
    这个 时候命名空间的好处就来了。声明命名空间用namespace 名字 即可。

    #include <iostream>
    #include <string>
    
    namespace China {
    //人口
    	float population = 14.1; // 单位:亿
    	std::string capital = "北京";
    }
    
    namespace Japan {
    	float population = 1.27;// 单位:亿
    	std::string capital = "东京";
    }
    
    using namespace Japan;
    
    int main() {
    	std::cout << "首都:" << capital << std::endl;
    	std::cout << "人口:" << population << std::endl;
    
    	std::cout << "首都:" << China::capital << std::endl;
    	std::cout << "人口:" << China::population << std::endl;
    
    }
    

    ​ 上面定义了两个命名空间ChinaJapan,和std使用方法一样。
    main函数上面使用using namespace Japan表示调用Japan中的变量时不需要加Japan::
    ​ 打印出的结果是JapanChina的信息

  • 注意:不能加上using namespace China; 两个都不用命名空间,也不能编译。写成这样是可以的:

    using namespace Japan;
    using namespace China;
    
    int main() {
        //错误的版本。
        /*std::cout << "首都:" << capital << std::endl;
    	std::cout << "人口:" << population << std::endl;*/
    
    	std::cout << "首都:" << Japan::capital << std::endl;
    	std::cout << "人口:" << Japan::population << std::endl;
    
    	std::cout << "首都:" << China::capital << std::endl;
    	std::cout << "人口:" << China::population << std::endl;
    
    }
    
  • 补充:也可以指定命名空间的某一个变量,使其调用前不用加命名空间。
    例如:using China::population; 只有China中的population可以不用加China,而调用capital时,也需要加上China。

下一节我们介绍自己写的代码(.cpp)变成可执行文件(.exe)的过程。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值