【C++技能树】NameSpace --命名空间的使用

简介: 我在这段代码中想使用rand这个变量名字.这是正常的行为.

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。


🌈个人主页:主页链接


🌈算法专栏:专栏链接


    我会一直往里填充内容哒!


🌈LeetCode专栏:专栏链接


目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出


🌈代码仓库:Gitee链接


🌈点击关注=收获更多优质内容🌈


34e10f06f34441459d188a604d80647a.png


开始C++的学习咯!


0.为什么有命名空间:


在c++中有很多重复的的名字,也就是常见的字母排列组合不下了,可能会导致你想用的名字与库里已经有的名字重复了.例如:


#include<iostream>
int main()
{
    int rand=0;
}


我在这段代码中想使用rand这个变量名字.这是正常的行为.


但当我导入了stdlib这个库之后:


b000b4c036ab4582a8a849a2e766aae3.png


就出现了这样的报错.表示rand被重新定义了这是什么原因呢?


因为stdlib中有一个叫做rand的函数.与你要使用的rand变量名字重复了


那如何解决这个问题呢?


1.命名空间的使用:


上述的问题可以通过C++的特性来解决.


使用命名空间(namespace)

也就是将刚刚的代码放入到一个空间当中,使用的时候通过先访问这个空间 在访问空间下的变量的方式来访问他.

#include<iostream>
#include<stdlib.h>
namespace yeye{
    int rand=5;
}
int main()
{
    //int rand=0;
    printf("%d",yeye::rand);
}


其中yeye就是我们的命名空间的名称.

通过::来访问.其中::叫做类型作用域操作符.

2.命名空间访问顺序:


int re=1;
int main()
{
    int re=2;
    printf("%d",re);
}


如果有这样一段代码,试想一下最后的结果是输出?


答案显然是2,因为局部变量的优先级高于全局变量


那如果我想访问全局变量re呢?该如何去做?


int re=1;
int main()
{
    int re=2;
    printf("%d",::re);
}


只需要在对象前加上::,即表示访问全局变量

若没有全局变量,则会访问展开的命名空间.


namespace yeye
{
    int re=3;
}
using namespace yeye;
    int main()
    {
        printf("%d",re);
    }


当然,若只想访问一个变量/函数,也可以直接定义using namespace::变量/函数名


namespace yeye
{
    int re=3;
    int c=0;
}
using yeye::c;
    int main()
    {
        printf("%d",re);
        printf("%d",c);
    }


此时访问re则会报错


53ded666f7f242e5a0f5b6215d2dd61f.png


3.可嵌套式定义:


也就是像套娃一样,可以一个命名空间嵌套在另一个命名空间当中.


namespace yeye
{
    int re=3;
    int c=0;
    namespace bibi{
        int re=2;
    }
}
    int main()
    {
        printf("%d",yeye::re); //打印3
        printf("%d",yeye::bibi::re); //打印2
    }


完结撒花:


🌈本篇博客的内容【NameSpace --命名空间的使用】已经结束。


🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。


🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。


🌈诸君,山顶见!

目录
相关文章
|
18天前
|
编译器 C语言 C++
C++命名空间的using声明
C++命名空间的using声明
12 0
|
1月前
|
C++
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
30 0
|
1月前
|
程序员 C++ 索引
在C++语言中Vector的命名空间的作用
在C++语言中Vector的命名空间的作用
15 0
|
1月前
|
程序员 C语言 C++
C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)
C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)
|
17天前
|
C语言 C++ 数据格式
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
|
5天前
|
C++
C++命名空间详解
C++命名空间详解
13 0
|
19天前
|
编译器 C语言 C++
【C++】C++入门第一课(c++关键字 | 命名空间 | c++输入输出 | 缺省参数)
【C++】C++入门第一课(c++关键字 | 命名空间 | c++输入输出 | 缺省参数)
|
21天前
|
编译器 C语言 C++
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
|
21天前
|
开发框架 .NET 编译器
【C++】C++对C语言的关系,拓展及命名空间的使用
【C++】C++对C语言的关系,拓展及命名空间的使用
|
1月前
|
Unix 编译器 C语言
『C++成长记』C++入门——命名空间&缺省参数
『C++成长记』C++入门——命名空间&缺省参数