C++重新认知:namesapce

发布时间:2024年01月10日

0、引言 为什么要用到命名空间

想必我们在写C++语言时经常在main.cpp文件内写下using namespace std 这句代码,这句代码有何作用呢?

其实写上这句代码后,我们就会使用std的命名空间。

好处:可以帮我们节省很多不必要的代码(std::就可以省去不写了)。

坏处:容易造成命名空间污染。

当我们写出同名的变量或者函数或者结构体时,一般境况下就会报错,但是我们希望都保留下来,并且在需要的时候调用他们,如何保留并且调用我们想要的,这里就用到了namespace,这也是设计的初衷——解决命名冲突的问题

一、namespace

在这里插入图片描述

当我们有两个相同变量名时编译器就会报错。

1.1 命名空间声明格式

namespace _Name
{
}

这里可以看到,两个相同的变量都保留了,不过在使用我们namespace中的变量时需要 _Name:: 变量
在这里插入图片描述

1.2 ::运算符

::运算符是一个作用域,如果::前面什么都没有加代表的是全局作用域

在这里插入图片描述

命名空间加上::就是我们命名空间的作用域了。

1.3 命名空间的使用

  • 命名空间的定义必须定义在全局范围

  • 命名空间下可以存放变量、函数、结构体、类

  • 命名空间可以重名、重名的会自动合并空间

在这里插入图片描述

  • 命名空间可以嵌套命名空间

在这里插入图片描述

  • 命名空间可以取别名

  • 命名空间可以没有名字 ,没有名字相当于给命名空间 内的所有成员加上了static修饰相当于只能被当前文件调用,属于内部链接属性 (就近原则)

在这里插入图片描述

在这里插入图片描述

  • 命名空间中的函数可以先声明,在外部定义,定义时需要加上命名空间作用域
    在这里插入图片描述

  • 命名空间中的函数可以先声明,在外部定义,定义时需要加上命名空间作用域

文章来源:https://blog.csdn.net/Rain_ZZX/article/details/135454769
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。