news 2026/9/23 10:37:46

名字空间(namespace)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
名字空间(namespace)
  • 最初C++标准中并没有名字空间,要求程序中全局作用域中声明的变量、函数、类型等必须具有唯一的名字
  • 如果在同一个程序中有两个名字相同的全局变量将产生命名冲突(和C语言一样)
  • 如果程序中引入第三方库就必须保证程序中定义的全局名都不能与所用库中的名字相同,否则就会产生冲突,这就是所谓的全局名字空间污染问题,该问题在大型程序中处理起来非常困难。
  • 为此引入了名字空间。在一个名字空间中,可以定义许多不同对象,并将这些对象的有效范围局限在名字空间内。不同名字空间中,可以定义相同名称的对象,只要两个同名对象不在同一名字空间中,就不会引起冲突

名字空间的定义

  • 语法格式
namespacexxx_name{members;}
  • 举例
namespaceABC{intnum;structstu{intage;char*name;};doubleadd(inta,intb){return(double)a+b;}intMin(inta,intb){returna>b?a:b;}}

如果使用cout或cin必须有using namespace std;

名字空间成员的访问

  • 名字空间成员的访问有主要有三种方法:

通过作用域限定符(::)

#include<iostream>usingnamespacestd;namespacens1{voidfunc(void){cout<<"ns1 func"<<endl;}}namespacens2{voidfunc(void){cout<<"ns2 func"<<endl;}}intmain(void){ns2::func();ns1::func();return0;}

using引用名字空间单个成员

#include<iostream>usingnamespacestd;namespacens1{voidfunc(void){cout<<"ns1 func"<<endl;}}namespacens2{voidfunc(void){cout<<"ns2 func"<<endl;}}intmain(void){usingns1::func;ns2::func();//ns1::func();func();return0;}

using引用名字空间全部成员

#include<iostream>usingnamespacestd;namespacens1{voidfunc(void){cout<<"ns1 func"<<endl;}inta=100;}namespacens2{inta=200;voidfunc(void){cout<<"ns2 func"<<endl;}}intmain(void){usingnamespacens1;ns2::func();//ns1::func();func();cout<<a<<endl;return0;}

无名名字空间

  • 未命名的名字空间称作无名名字空间
#include<iostream>//using namespace std;namespacens1{voidfunc(void){std::cout<<"ns1 func"<<std::endl;}inta=100;}namespacens2{inta=200;voidfunc(void){std::cout<<"ns2 func"<<std::endl;}}namespace{//无名名字空间inta=300;}intmain(void){//using namespace ns1;ns2::func();ns1::func();std::cout<<ns1::a<<std::endl;std::cout<<::a<<std::endl;//无名名字空间成员的引用return0;}

名字空间嵌套

  • 指定义在其他名字空中的名字空间
#include<iostream>usingnamespacestd;namespacens1{voidfunc(void){std::cout<<"ns1 func"<<std::endl;}inta=100;namespacens2{intb=111;}}intmain(void){cout<<ns1::ns2::b<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 0:43:54

AI教材生成超厉害!一键搞定创作,低查重通过审核没问题!

教材初稿终于完成&#xff0c;但接下来的修改和优化过程简直就是一种“煎熬”&#xff01;要通读整本书寻找逻辑上的漏洞和知识点的错误&#xff0c;这可真需要花费不少时间&#xff1b;而调整一个章节的结构&#xff0c;往往会影响到后面好几个部分&#xff0c;修改的工作量几…

作者头像 李华
网站建设 2026/9/20 21:36:54

基于 ESP32 的雨伞遗忘提醒挂钩设计与实现

引言 下雨天出门忘带伞、到家忘收伞是生活中常见的小烦恼,尤其是匆忙出门时,雨伞遗落在挂钩上往往会导致出行不便。本文基于 ESP32 微控制器设计一款低成本、易实现的 “雨伞遗忘” 提醒挂钩,通过压力检测判断雨伞是否悬挂、人体红外检测判断人员是否离开,当检测到 “有伞…

作者头像 李华
网站建设 2026/9/21 14:45:22

传输标准:企业应如何统一资源分级、负载配置与广域连通指标

制定传输资源分级标准、实施路由系统负载配置、达成广域网路由连通指标 摘要 本文为企业IT部门、信息化负责人及运维团队提供核心价值&#xff1a;通过可视化运行监控系统&#xff0c;支撑系统规划、标准化交付与平台化运维&#xff0c;实现高确定性的ICT基础设施管理&#x…

作者头像 李华
网站建设 2026/9/20 23:06:41

AI写论文超神组合!4款AI论文写作工具,为你的毕业论文保驾护航!

AI论文写作工具推荐 还在为撰写期刊论文而烦恼吗&#xff1f;面对海量的文献、复杂的格式以及无休止的修改&#xff0c;使得学术工作者们的效率普遍不高&#xff01;别担心&#xff0c;接下来我将推荐四款实测过的AI论文写作工具&#xff0c;它们能从论文文献检索、论文大纲生…

作者头像 李华
网站建设 2026/9/20 12:19:57

类的访问权限:public、private 与 protected 详解

类的访问权限&#xff1a;public、private 与 protected 详解 在C面向对象编程中&#xff0c;类的三大访问权限&#xff08;public、private、protected&#xff09;是实现封装特性的核心&#xff0c;也是连接类的定义与对象使用的关键纽带。上一篇博客《C 类与对象&#xff1…

作者头像 李华