C++中命名空间(namespace)详解及其作用介绍

 更新时间:2022年08月30日 09:15:46   作者:ljh5930  
考虑一种情况,当我们有两个同名的人,Zara,在同一个班里。当我们需要对它们进行区分我们必须使用一些额外的信息和它们的名字,比如它们生活在不同的区域或者兴趣爱好什么的,在C++程序中也会遇到同样的情况,所以命名空间就此产生

为什么要有命名空间

在C语言中定义了3个层次的作用域:文件(编译单元)、函数和复合语句

在C++中,多了类

全局变量中不能有同名函数、变量和类

为了使同名类存在,就要加作用域,于是就有了命名空间

命名空间是什么

命名空间是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突

命名空间,实际上就是一个由程序设计者命名的内存区域(分类用的)

没有给命名空间分类的作用域了,同层次命名空间就不能重名了

namespace a
{
	int b;
	double c;
}

命名空间就是分类用的,和文件夹作用一样的

全局变量可以理解为全局命名空间,就像根目录

在全局命名空间(根目录),创建命名空间(文件夹)

文件夹下可以继续创建文件夹

只要同一级别名字不一样就行

#include<stdio.h>
#include<stdlib.h>
namespace n1
{
	namespace n1
	{
		int rand = 1;
	}
}
int main()
{
	int rand = 1;
	printf("%d\n", n1::n1::rand);
	return 0;
}

怎么用

面向对象,只关注对象,用函数库进行操作

大家都是正常人,正常的名字就那么多,不分类,谁知道说的是谁

#include<stdio.h>
#include<stdlib.h>
namespace n1
{
	int a = 1;
}
namespace n2
{
	int a = 1;
}
int main()
{
	int rand = 1;
	printf("%d\n", a);
	return 0;

输出a,你说的是哪个,n1的,还是n2的,

使用命名空间

using namespace n1

#include<stdio.h>
#include<stdlib.h>
namespace n1
{
	int a = 1;
}
namespace n2
{
	int a = 1;
}
using namespace n1;
int main()
{
	int rand = 1;
	printf("%d\n", a);
	return 0;

n1::a 相当于给路径

#include<stdio.h>
#include<stdlib.h>
namespace n1
{
	int a = 1;
}
namespace n2
{
	int a = 1;
}
int main()
{
	int rand = 1;
	printf("%d\n", n1::a);
	return 0;

到此这篇关于C++中命名空间(namespace)详解及其作用介绍的文章就介绍到这了,更多相关C++命名空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++中的三种继承public,protected,private详细解析

    C++中的三种继承public,protected,private详细解析

    我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员。然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限
    2013-09-09
  • C语言函数传递数组和传递地址的区别你知道吗

    C语言函数传递数组和传递地址的区别你知道吗

    这篇文章主要介绍了C语言中数组作为函数的参数以及返回值的使用简单入门,这里以一维数组作为基本条件进行例子讲解,需要的朋友可以参考下
    2021-09-09
  • C++实现LeetCode(121.买卖股票的最佳时间)

    C++实现LeetCode(121.买卖股票的最佳时间)

    这篇文章主要介绍了C++实现LeetCode(121.买卖股票的最佳时间),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++设计模式之外观模式

    C++设计模式之外观模式

    这篇文章主要介绍了C++设计模式之外观模式,本文详细讲解了C++中的Facade模式,并给出了实例代码,需要的朋友可以参考下
    2014-10-10
  • C++函数模板与重载解析超详细讲解

    C++函数模板与重载解析超详细讲解

    模板是C++最重要的设计。这篇文章讲的是函数模板,只是简单介绍模板的一些功能,关于模板的更多的内容会在类模板中详细介绍。文章还着重介绍了重载解析过程
    2022-08-08
  • C++之值传递&指针传递&引用传递的示例详解

    C++之值传递&指针传递&引用传递的示例详解

    这篇文章主要为大家详细介绍了C++中值传递、指针传递和引用传递的定义与使用,文中的示例代码讲解详细,对我们学习C++有一定帮助,需要的可以参考一下
    2022-10-10
  • C++中hashmap的一些使用建议

    C++中hashmap的一些使用建议

    由于hashmap不是c++ stl中标准实现,这样在跨平台使用时就可能会出现问题,下面这篇文章主要给大家介绍了关于C++中hashmap的一些使用建议,需要的朋友可以参考下
    2023-03-03
  • C++入门教程详解之命名空间、函数重载、缺省参数

    C++入门教程详解之命名空间、函数重载、缺省参数

    这篇文章主要介绍了C++入门教程详解之命名空间、函数重载、缺省参数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • EasyC++内部链接性和无链接性

    EasyC++内部链接性和无链接性

    这篇文章主要介绍了EasyC++内部链接性和无链接性,当我们使用static关键字,将变量的作用于限制在整个文件时,该变量的链接性为内部链接性,然而无链接性的变量其实就是在代码块当中使用static关键字创建的,接下来一起进入文章了解更多内容吧
    2021-12-12
  • Qt基础开发之Qt多线程类QThread与Qt定时器类QTimer的详细方法与实例

    Qt基础开发之Qt多线程类QThread与Qt定时器类QTimer的详细方法与实例

    这篇文章主要介绍了Qt基础开发之Qt多线程类QThread与Qt定时器类QTimer的详细方法与实例,需要的朋友可以参考下
    2020-03-03

最新评论