C++命名空间

举报
花狗Fdog 发表于 2021/02/19 00:50:59 2021/02/19
【摘要】 文章目录 定义命名空间的格式使用定义好的命名空间:嵌套命名空间不连续的命名空间 以前上课在Android studio上用java写代码的时候,有一个函数明明和书上一样,但就是出错,捣鼓了半天,原来是包导错了,为了耍帅,手一快,package xxxxx 这个包就是java中的命名空间,刚学java的时候,老师总是会让我们建一个包,但后来发现包这...

以前上课在Android studio上用java写代码的时候,有一个函数明明和书上一样,但就是出错,捣鼓了半天,原来是包导错了,为了耍帅,手一快,package xxxxx 这个包就是java中的命名空间,刚学java的时候,老师总是会让我们建一个包,但后来发现包这个东西,可有可无(其实是代码写的太少,根本不可能重名)。

相对于java,C++更不是省油的灯,在C++中,变量、函数和类更是大量存在的。如果没有命名空间,这些变量、函数、类的名称将都存在于全局命名空间中,会导致很多冲突,所以C++也有它自己的命名空间,而类似于命名空间之类的知识点,大多数都需要我们建立在一定的代码基础上才能够理解它(我相信刚开始有很多人不理解为什么要有C++),这也是为什么很多C++入门书刚开始只是说using namespace std 这个叫命名空间,加上就好,并没有细说。

定义命名空间的格式

namespace dog{
	//你的函数名,变量名
	getcode();
	int dog;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

使用定义好的命名空间:

//可以使用using在代码里面添加全部
using namespace dog;
dog = 1;
getcode();

  
 
  • 1
  • 2
  • 3
  • 4
//可以使用using指出单个要使用的变量或者函数
using dog::dog;
using dog::getcode();
dog = 1;
getcode();

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
//也可以在使用它们的时候添加单独一个变量或者函数
dog::dog = 1;
dog::getcode();

  
 
  • 1
  • 2
  • 3

using也是C++中的一个关键字,至于std,标准C++把自己的整个库都定义在std命名空间中。

嵌套命名空间

就好像双重for的写法一样,命名空间,也可以进行嵌套。

namespace animal {
		//声明
		namespace person{
		//声明
		}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//如果想使用person
using namespace animal::person;
//如果想使用animal(如同i定义在for的作用域相似,如果直接使用animal,那么person的声明也在使用范围之内。)
using namespace animal;

  
 
  • 1
  • 2
  • 3
  • 4

不连续的命名空间

命名空间可以定义在几个不同的部分中,因此命名空间是由几个单独定义的部分组成的。一个命名空间的各个组成部分可以分散在多个文件中。

//当在A文件中有一个命名空间
namespace dog{
//代码
}

//如果这时B文件再定义一个相同的命名空间,在这之前,A中已经定义,所以在B中再次定义,可以理解为增加新元素
namespcae cat{
//代码
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

文章来源: blog.csdn.net,作者:花狗Fdog,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Fdog_/article/details/113786242

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。