【c++】命名空间namespace作用常见用法介绍(个人学习笔记)

命名空间的基本理解

C++在C语言的基础上增加了命名空间这个新的特性,随着在现实环境下项目工程庞大,一个人很难独立完成,往往以多人合作的方式来完成一个大的项目,对变量的命名就有可能出现混乱的情况,命名空间的引入则很好的解决了这个问题。c++中namesapce可以在多人开发过程中避免命名重复导致的问题,在实际项目开发中,程序员可以下自己创建的命名空间中根据自己的代码习惯定义名称。

1.标准命名空间std

#include<iostream>//c++标准库
using namespace std;//标准命名空间
int main()
{
    cout<<"hello c++";//输出一句话
    std::cout<<"hello c++";//或者可以这样写
    cout<<endl;//换行
    return 0;
}

在理解标准命名空间之前,我们要先理解c/c++标准库。由于c++标准库中的函数和对象都在标准命名空间std中限定,为了防止用户自定义函数或类与标准中命名冲突,所以我们使用标准库的函数和对象的时候必须加上std标准命名空间。

C/C++标准库主要包含3部分: STL、IO流及本地化、C的函数库。标准库不是STL,STL是标准模板库,是标准库的一个子集。它是一个可复用的组件库,其中包含了很多实用的算法和数据结构。STL是一个泛型思维的集中体现。出自:C++命名空间、标准库(std,全局命名空间)

C++非标准库中不存在std类,调用函数时不需要使用std。
非标准库调用

#include<iostream.h>

推荐:C/C++之标准库和标准模板库

2.多个命名空间的使用

#include <iostream>

namespace name1{
    std::string string3="给我一个赞好吗 ";
}
namespace name2{
    std::string string2="hello c++";
}
namespace name3 {
   std::string string1="i like c++";
}
int main() {
    std::cout<<name1::string3<<std::endl;
    std::cout<< name2::string2<<std::endl;
    std::cout<<name3::string1<<std::endl;
    return 0;
}


give me one zan ,please 给我一个赞好吗
hello c++
i like c++

命名空间相当于给变量和函数和对象一个“国籍”,用“国籍”来给这些变量函数对象归类,不至于让”社会“太乱。

3.多个命名空间的嵌套定义

在C++17中添加了很多新的特性,其中有了可以以一种更加简洁的形式描述嵌套命名空间。

namespace A::B::C{
int a(){
    return s;
  }
}

以上代码等同于

namespace A{
     namespace B{
		namespace C{
      	}
 	}
}

多个namespace的嵌套使用,

namespace ABC
{
        void fun1(){printf("this is fun1.\n");}

        namespace map
        {
                void fun2(){printf("this is fun2.\n");}
        }
}

using namespace ABC;
using namespace ABC::map;  //使用两个namespace, 相当于把两个空间中的变量和函数都抠出来,供本函数使用

int _tmain(int argc, _TCHAR* argv[])
{
        fun1();
        fun2();

        return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jarvis-Max

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值