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

c++ namespace名字域空间

在C++中,namespace 是一个非常重要的概念,用于组织代码,避免名称冲突。namespace(命名空间)是一个逻辑上的代码组织单元,用于将代码(类、函数、变量等)分组,从而避免命名冲突。例如,如果两个不同的模块都有一个名为 Controller 的类,通过将它们放在不同的命名空间中,可以避免冲突。
在以往最简单的使用就是std命名空间了。

using namespace std;

cout << "hello" << endl;
// 否则就是 std::cout << "hello" << std::endl;

定义命名空间

可以在代码中使用 namespace 关键字来定义一个命名空间。

// value 和 printValue 都属于 example 命名空间
namespace example
{
    int value = 10;
    void printValue() 
    {
        std::cout << "Value: " << value << std::endl;
    }
}

要使用命名空间中的成员,可以使用作用域运算符 ::

example::printValue();  // 输出: Value: 10

为了简化代码,可以使用 using 指令将命名空间中的成员引入到当前作用域中。

using namespace example;
printValue();  // 直接使用,而不需要 `example::`

使用命名空间

namespace 是非常灵活的,可以出现在代码的任何地方(全局作用域、函数内部、类内部等)。

void myFunction() 
{
    namespace local 
    {
        int value = 20;
        void printValue() 
        {
            std::cout << "Local Value: " << value << std::endl;
        }
    }
    local::printValue();  // 输出: Local Value: 20
}

两个同名的命名空间使用

// module1的Controller类
namespace module1 
{
    class Controller 
    {
    public:
        void control() 
        {
            std::cout << "Module1 Controller" << std::endl;
        }
    };
}

// module2的Controller类
namespace module2 
{
    class Controller 
    {
    public:
        void control() 
        {
            std::cout << "Module2 Controller" << std::endl;
        }
    };
}

// 使用时不会冲突
module1::Controller c1;
c1.control();  // 输出: Module1 Controller

module2::Controller c2;
c2.control();  // 输出: Module2 Controller

相关文章:

  • Java中的ArrayList和C++中的vector的区别
  • 【Python爬虫(93)】爬虫项目的安全防线:审计与合规攻略
  • 大数据治理
  • shell脚本编程实践第2天
  • 项目实战--网页五子棋(对战功能)(7)
  • 九、Spring Boot:自动配置原理
  • 线上JVM OOM问题,如何排查和解决?
  • Vscode通过Roo Cline接入Deepseek
  • git和gitee在idea中的使用
  • 有关Java中的集合(2):Map<T>(底层源码分析)
  • JavaSE语法笔记
  • 【Springer上传手稿记录】《Signal, Image and Video Processing》
  • JavaScript---数组内置方法与日期内置方法汇总
  • SP导入智能材质球
  • C语言学习笔记-初阶(23)函数详解
  • Tomcat 乱码问题彻底解决
  • 快速调用DeepSeek API: 硅基流动 X 华为云 X ChatBox(2025/2/5)
  • Linux上构建RPM包指南
  • 力扣27.移除元素(双指针)
  • go前后端开源项目go-admin,本地启动
  • 体坛联播|C罗儿子完成国家队首秀,德约结束与穆雷合作
  • 三亚通报救护车省外拉警报器开道旅游:违规违法,责令公司停业整顿
  • 观众走入剧院空间,人艺之友一起“再造时光”
  • 汇源果汁发文:经营情况一切正常
  • 国内大模型人才大战打响!大厂各出奇招
  • 乌外长:乌方准备无条件停火至少30天