当前位置: 首页 > news >正文

【C++】命名空间

C++ 命名空间(namespace)

C++ 命名空间

  • C++ 命名空间(namespace)
  • 1. 定义命名空间
  • 2. using 指令
  • 3. 命名空间的分布
  • 4. 匿名命名空间

为了解决源文件中变量,函数重名的问题(作用域冲突问题),引入了命名空间(namespace)。

1. 定义命名空间

命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示:

namespace name {   // 函数,变量}

{ } 中可以定义变量和函数,

为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:

name::code;  // code 可以是变量或函数

2. using 指令

您可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。

常见的 cpp hello world例子如下:

#include <iostream>
using namespace std;int main(void)
{cout << "hello world!" << endl; return 0;
}

using 指令也可以用来指定命名空间中的特定项目,例如只对 std::cout 生效,其他的不生效。

比如直接指定:using std::cout 使用命名空间std下的cout函数,示例如下:

#include <iostream>
using std::cout;int main(void)
{cout << "hello world!" << std::endl; return 0;
}

using 指令引入的名称遵循正常的代码范围规则,名称从使用 using 指令开始是可见的,直到该代码段范围结束。

3. 命名空间的分布

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

4. 匿名命名空间

C++中把**namespace { … } 没有名字的写法叫 匿名命名空间(anonymous namespace),它的作用是把其中声明的符号限定为“本编译单元内可见”,和 static 的作用一样,但是比 static 简洁。

作用与特点

  1. 内部链接(Internal linkage)
    • 匿名命名空间里的函数、变量、类 只能在当前 .cpp 文件里访问
    • 编译器会自动生成一个唯一的、不可见的名字,避免与别的文件冲突。
    • 和在全局作用域写 static 的效果类似,但更现代化、语义更清晰。
  2. 封装实现细节
    • 很适合放只在本文件使用的工具函数、常量、全局对象,防止被其他文件 extern 引用。
    • 在大型工程或库里,可以避免命名污染。
  3. 与普通 namespace foo {} 的区别
    • 普通命名空间可跨文件访问,需要写 foo::func();
    • 匿名命名空间无法在别处用名字引用,因为它没有名字
http://www.dtcms.com/a/423729.html

相关文章:

  • [特殊字符] LeetCode 143 重排链表(Reorder List)详解
  • 轻量级webgis环境搭建
  • 内网网站搭建教程做平面设计都在那个网站找免费素材
  • 网站备案都有哪些服务类网站模板
  • QT常用快捷键
  • 企业级智能体产业落地实践报告 - 智能体发展展望
  • 建设电子商务平台网站施工企业安全生产评价表下载
  • 如何在 vscode 里配置 MCP 并连接到 Elasticsearch
  • 开源安全管理平台wazuh-安装与配置
  • 开发区建网站外包上海小程序开发与制作公司
  • 常州做网站建设的公司网络营销的优势有哪些?
  • Zookeeper 技术详细介绍
  • 精美个人网站电子商务基础网站建设与维护单项选择题
  • 菜鸟教程网站建设培训网站建设方案说明书
  • 直播间 网站建设南京市建设工程网站
  • 网页设置百度seo外包
  • 塑料餐饮具头部优势,新天力市占率稳步提升
  • 郑州做定制网站的公司自学python需要的软件
  • 每天五分钟深度学习:如何判断神经网络是过拟合还是欠拟合?
  • Supermicro NVIDIA Grace Superchip存储服务器超微ARS-121L-NE316R开箱评测
  • 解决在使用Lombok时maven install 找不到符号的问题
  • 从零复现论文:深度学习域适应1
  • 一品威客:小程序智能客服:AI 如何帮助企业降低 80% 客服成本?
  • 爱电影网站织梦网站404怎么做
  • 【读取WPS嵌入图片】使用POI读取Excel中的嵌入图片
  • 【Block总结】LAGA,大核分组注意力门,实现特征融合|即插即用
  • 科研项目管理系统对比:如何管好需求、进度、资源与成果?
  • 全球设计网站排行高德是外国公司吗?
  • 动态规划DP:从硬币问题到挤牛奶问题的算法实战
  • 二十八、API之《System 类》——与系统交互的“桥梁”