恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

C++命名空间的介绍和使用

  • 首页
  • 资讯中心
  • /
  • C++命名空间的介绍和使用

相关资讯

大模型微调入门:从概念到实战,5分钟搞懂LoRA和QLoRA 2026/9/6 13:17:43
打造个人IP文案指令 2026/9/6 13:17:43
APQP产品质量先期策划:从五大工具逻辑到第三版变化与课件维护 2026/9/6 13:17:43

最新资讯

Deep-Live-Cam 一张照片实时换脸
UDS协议与故障诊断:车载诊断测试工程师面试核心指南
PyTorch Geometric 实战教程:10 行代码训练你的第一个图神经网络
IOPaint 图像修复教程:一条命令启动,三步抹掉照片里的水印
Qwerty Learner:把背单词和打字练成肌肉记忆的 3 步上手指南
用 Qwerty Learner 背单词的同时练出英语打字肌肉记忆:完整上手指南

今日推荐

超人会飞不算本事:系统稳定依赖清晰规则与边界设计
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
基于CNN的调制信号识别:MATLAB实现时频图分类实战

本周热门

超人会飞不算本事:系统稳定依赖清晰规则与边界设计
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
基于CNN的调制信号识别:MATLAB实现时频图分类实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

C++命名空间的介绍和使用

发布时间:2026/9/6 13:22:43
C++命名空间的介绍和使用 命名空间在C/C中变量、函数和类都是大量存在的这些变量、函数和类的名称将都存在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。#includelt;stdio.hgt;#includelt;stdlib.hgt;intrand10;intmain(){printf(%d\n,rand);return0;}// 编译后后报错error C2365rand重定义// 报错重定义是因为在stdlib.h里面已经定义了一个rand这里重复定义了// 这是库冲突也就是自己定义的名字和库里面的名字重复//也有自己互相冲突比如两个人写同一个项目的不同模块最后一合并有命名冲突// C语言没办法解决类似这样的命名冲突问题所以C提出了namespace来解决2.1 命名空间定义定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{}中即为命名空间的成员。正常的命名空间定义// xioayu是命名空间的名字一般开发中是用项目名字做命名空间名。// 自己练习用自己名字缩写即可如张三zsnamespacebit{// 命名空间中可以定义变量/函数/类型intrand10;intAdd(intleft,intright){returnleftright;}structNode{structNode*next;intval;};}命名空间可以嵌套// test.cppnamespaceN1{inta;intb;intAdd(intleft,intright){returnleftright;}namespaceN2{intc;intd;intSub(intleft,intright){returnleft-right;}}}同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。注意一个命名空间就定义了一个新的作用域(也就是命名作用域)命名空间中的所有内容都局限于该命名空间中。//命名空间域看起来和局部域很像实际上不是一回事命名空间域不影响生命周期。2.2 命名空间使用命名空间中成员该如何使用呢比如namespacebit{// 命名空间中可以定义变量/函数/类型inta0;intb1;intAdd(intleft,intright){returnleftright;}structNode{structNode*next;intval;};}// 这里没有分号intmain(){// 编译报错error C2065a未声明的标识符printf(%d\n,a);return0;}//我们可以看到当没有使用特殊方法的时候命名空间里的变量是无法被外面使用的命名空间的使用有三种方式加命名空间名称及作用域限定符intmain(){printf(%d\n,N::a);return0;}指定访问最推荐风险最小。当要访问嵌套的命名空间里的变量的时候依次在左边加上命名空间名就行。使用using将命名空间中某个成员引入usingN::b;intmain(){printf(%d\n,N::a);printf(%d\n,b);return0;}使用using namespace 命名空间名称 引入usingnamespce N;intmain(){printf(%d\n,N::a);printf(%d\n,b);Add(10,20);return0;}这就是命名空间全部展开这种方式是告诉编译器这个域可以搜索当全局变量和被展开的命名空间里的变量名字一样的时候编译器会不知道哪个错误但是实际上他们不在一个域里面并不是重定义错误。注意早期标准库将所有功能在全局域中实现声明在.h后缀的头文件中使用时只需包含对应头文件即可后来将其实现在std命名空间下为了和C头文件区分也为了正确使用命名空间规定C头文件不带.h旧编译器(vc 6.0)中还支持iostream.h格式后续编译器已不支持因此在日常练习中推荐使用iostream.hstd的方式。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号