找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2652|回复: 12

C++命名空间namespace的理解

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:28
  • 打卡月天数:7
  • 打卡总奖励:7961
  • 最近打卡:2025-12-22 17:16:30

3317

主题

285

回帖

2万

积分

管理员

积分
24106
发表于 2021-2-28 13:47:16 | 显示全部楼层 |阅读模式



C语言定义了3个层次的作用域:文件、函数和复合语句。
C++ 引入了类的作用域,类是在文件内的。
在不同的作用域中,可以定义相同名字的变量,互不干扰,编译器能够区别它们。
1、命名空间的概念
C语言中,只有一个全局作用域,所有全局标识符共享一个作用域,因此绝对不能重名。
但随着系统越来越复杂,通常不会仅由一个人来开发,不同的人开发同一个系统,不可避免地会出现变量或函数的命名冲突,当将所有人的代码结合到一起时,就会因为变量或函数重名,导致编译失败。
因此,C++提出了命名空间的概念:
  • 命名空间将全局作用域分成不同的部分;
  • 不同命名空间的标识符可以同名,不会发生冲突;
  • 命名空间可以嵌套。
namespace Name1{  namespace Name2  {    /*...*/  }    /*...*/}
全局作用域也叫默认命名空间。
2、举例说明
比如现在有一个小学,学校里有六个年级,每个年级有三个班级。
现在一位老人来这个学校找到校长,要找一位叫张三的学生,感谢他在公共汽车上给自己让座。
现在校长(编译器)要找张三,但学校里有很多叫张三的人,怎么确定是哪个张三呢?
这时如果知道张三是哪个年纪,哪个班级,那么很快就能确定是谁。
假设是三年级二班的张三,那么这个三年级二班就是命名空间。
namespace grade{  namespace class  {    student zhang_san;  }}
C++的命名空间,就是一种为了避免命名冲突的机制。


3、使用方式
C++的命名空间,有两种使用方式:
  • 导入整个命名空间:using namespace name;
  • 只导入命名空间中的某个变量:using name::variable
// 导入整个std命名空间到当前作用域using namespace std;// 只导入cout到当前作用域using std::cout;

来源:算法集市(头条)
原链:https://www.toutiao.com/a6845627757724959243/
工控课堂 www.gkket.com

0

主题

80

回帖

263

积分

注册会员

积分
263
发表于 2021-2-28 13:47:17 | 显示全部楼层
这个类目最活跃了!赞一个!
工控课堂 www.gkket.com

0

主题

296

回帖

1149

积分

中级会员

积分
1149
发表于 2021-2-28 16:59:43 | 显示全部楼层
感谢分享,佩服佩服!
工控课堂 www.gkket.com

0

主题

87

回帖

133

积分

新手上路

积分
133
发表于 2025-11-17 00:13:09 | 显示全部楼层
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com

0

主题

89

回帖

134

积分

新手上路

积分
134
发表于 2025-11-17 00:25:38 | 显示全部楼层
已转发给朋友,一起感受这份快乐~
工控课堂 www.gkket.com

0

主题

73

回帖

95

积分

新手上路

积分
95
发表于 2025-11-17 00:27:00 | 显示全部楼层
这评论区卧虎藏龙,个个都是人才!
工控课堂 www.gkket.com

0

主题

114

回帖

180

积分

新手上路

积分
180
发表于 2025-11-17 00:33:25 | 显示全部楼层
学到了学到了,这波分享太实用啦!
工控课堂 www.gkket.com

0

主题

93

回帖

158

积分

新手上路

积分
158
发表于 2025-11-17 00:35:57 | 显示全部楼层
救命!这回复笑到我捶桌,必须置顶~
工控课堂 www.gkket.com

0

主题

92

回帖

203

积分

注册会员

积分
203
发表于 2025-11-17 00:36:21 | 显示全部楼层
我先占个楼,等下再慢慢看~
工控课堂 www.gkket.com

0

主题

120

回帖

376

积分

注册会员

积分
376
发表于 2025-11-17 00:38:38 | 显示全部楼层
谁懂啊!真的被戳中笑点 / 泪点了
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 20:38 , Processed in 0.099753 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表