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

C++ | 高级教程 | 命名空间

👻 概念

**【问题】**在一个库中有名为 xyz() 的函数,在另一个库中也存在相同的函数 xyz(),编译器就无法判断所使用的是哪一个 xyz() 函数

**【解决】**引入了命名空间,可作为附加信息来区分不同库中相同名称的函数、类、变量等。本质是定义一个范围。

[!NOTE]

一个文件夹中可以包含多个文件夹,每个文件夹中的文件不能重名,不同文件夹中的文件可以重名
在这里插入图片描述

👻 定义 命名空间

👾语法格式

使用关键字 namespace 定义命名空间

namespace namespace_name {
   // 代码声明
}

👾示例代码

namespace first_space{
   void func(){ cout << "Inside first_space" << endl; }
}

👻 访问 命名空间

👾语法格式

使用作用域解析运算符 :: 访问命名空间相关成员

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

👾示例代码

namespace first_space { void func() { cout << "Inside first_space" << endl; } }
namespace second_space { void func() { cout << "Inside second_space" << endl; } }

...

first_space::func();	// 输出 Inside first_space
second_space::func();	// 输出 Inside second_space

👻 使用 命名空间

👾语法格式

使用 using namespace 语句指定要使用的命名空间,限定命名空间范围

using namespace namespace_name;

👾示例代码

namespace first_space { void func() { cout << "Inside first_space" << endl; } }
namespace second_space { void func() { cout << "Inside second_space" << endl; } }

...
     
using namespace first_space;
func();	// 输出 Inside first_space

👻 使用 命名空间成员

👾语法格式

使用 using 语句指定要使用的命名空间成员,相对于using namespace 语句更加细化

using namespace_name::identifier;		// identifier 是命名空间 namespace_name 的成员(函数或变量)

👾示例代码

using std::cout;
using std::endl;
cout << "Hello, World!" << endl;  // 直接使用 cout 和 endl

使用 using namespace std;using std::cout; 的区别

using namespace stdusing std::cout
引入范围std 命名空间所有标识符只引入std::cout 标识符
潜在问题如果定义一个与 std 同名的标识符,会导致命名冲突不会引入其他不必要的标识符,减少命名冲突的可能性
代码使用image-20250126001556754image-20250126001213057
适用小型项目(代码短,不易引入命名冲突)大型项目(只引入需要标识符,避免潜在命名冲突)

👻 嵌套 命名空间

👾语法格式

命名空间可以嵌套,可以在一个命名空间中定义另一个命名空间

namespace namespace_name1 {
   // 代码声明
   namespace namespace_name2 {
      // 代码声明
   }
}

👾示例代码

// 命名空间
namespace first_space {
	void func() { cout << "外层命名空间" << endl; }
	namespace second_space {
		void func() { cout << "嵌套命名空间" << endl; }
	}
}

...

using namespace first_space::second_space;
func();	// 输出 嵌套命名空间

相关文章:

  • B2B订货系统在提升订单处理效率与准确性上,有哪些关键流程与机制?
  • 灵犀互娱游戏测试开发一面面经
  • Linux系统中ssh远程登录协议
  • 2011-2019年各省15岁及以上文盲人口数数据
  • Quickwit基于MinIO搭建分布式集群
  • vue2使用xlsx依赖导出excel并封装组件
  • 【excel】easy excel如何导出动态列
  • 【CSS 选择器的特异度 CSS 继承 CSS 求值过程解析 CSS 布局方式及相关技术】
  • 环境安装与配置:全面了解 Go 语言的安装与设置
  • 海洋 CMS V9SQL注入漏洞
  • 编写一个程序,输出 “Hello, World!“(Python版)
  • Python代码片段-Excel导入到MongoDB
  • 数据结构(陈越,何钦铭) 第四讲 树(中)
  • 进程状态(R|S|D|t|T|X|Z)、僵尸进程及孤儿进程
  • 测量海拔以及两点间路程(十六)
  • 利用deepseek参与软件测试 基本架构如何 又该在什么环节接入deepseek
  • HWUI 和 Skia
  • python-leetcode-每日温度
  • 精选案例展 | 智己汽车—全栈可观测驱动智能化运营与成本优化
  • BUU41 [GYCTF2020]FlaskApp1【SSTI】
  • 做趣味图形的网站/活动营销案例100例
  • 太湖云建站网站建设/2023b站免费推广入口
  • 哪里有网站建设培训班/免费域名
  • 如何做网站打广告/网站页面优化包括
  • 有哪些做婚品的网站/营销系统
  • 阳泉那有做网站的/企业网站怎么注册官网