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

C++ -命名空间-详解

在C++中,创造了一个关键字namespace ,用来解决全局域中命名冲突的问题。

1 定义

命名空间可以定义出一个域,将其中的内存隔离在这个独立区域,不会与其他区域中的名字冲突:

namespace ly
{int rand = 0;
}

2 使用

有三种域,局部域、全局域、命名空间域。
在一些C++程序开头,常常看见下面这两句代码:

#include <iostream>
using namespace std;

意思是展开了C++标准库的命名空间域。
将命名空间域中的内容全部暴露到全局域,而同一个域不能定义同名变量。
所以以下内容 错误

#include <stdio.h>
int a = 0;//全局域--全局变量
namespace ly
{int a = 2;//命名空间域
}
using namespace ly;//展开命名空间域
int main()
{printf("%d\n", a);return 0;
}

3.C++ 标准库中的命名空间

C++无.h, 为了与C语言进行区分,并且有了命名空间,C++库、STL等被封进std,这时.h就没有了。
标准库通过std命名空间进行管理,在 C++ 的标准库中,所有的库函数和对象都封装在 std 命名空间中。
使用标准库时,可以选择指定访问,例如:使用标准库时,可以选择指定访问,例如:使用标准库时,可以选择指定访问,例如:使用标准库时,可以选择指定访问,例如:

std::cout << "Hello World!" << std::endl;

或者展开空间:(这个展开并非展开头文件,因此,展开std不等于不包含头文件!!) 不建议这样使用

using namespace std;
cout << "Hello World!" << endl;

直接展开会有风险,如果自己定义的跟库重名,就会报错,这不就直接回到起点,将C语言的缺点再次包含。
因此,建议在项目中不要展开,而是指定访问;而日常练习中可以展开。

下面只需将常用的展开,不常用的再指定访问,就能大大减少工作量,使用"using"关键字将"cout"、"endl"和"sqrt"符号从它们各自的命名空间中引入到我们当前的作用域中。使得我们可以在不使用命名空间前缀的情况下使用它们。

using std::cout;
using std::endl;
cout << "Hello World!" << endl;

这段代码是一个using声明,它将Camera类中的setVideoQuality函数引入到当前作用域中,以便可以在不需要使用Camera作为前缀的情况下使用该函数。这种方法也称为using指令或using编译指令。

#include "Camera.h"int main() {Camera cam;cam.setVideoQuality(720);return 0;
}

4.引入类中的函数

另一种使用方法:可以使用using声明将setVideoQuality函数引入到当前作用域中:

#include "Camera.h"
using Camera::setVideoQuality;int main() {Camera cam;setVideoQuality(cam, 720);return 0;
}

可以直接调用setVideoQuality函数,而不需要使用Camera作为前缀。注意,在这种情况下,我们需要传递Camera对象作为函数的第一个参数

相关文章:

  • chmod 777含义:
  • 全端同步!ZKmall开源商城如何用B2B2C模板让消费者跨设备购物体验无缝衔接?
  • QT之LayOut布局
  • MCP LLM Bridge:连接Model Context Protocol与OpenAI兼容LLM的桥梁
  • (4)python爬虫--JsonPath
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
  • 如何在前端页面上展示解析后的 JSON 数据?
  • DeepSeek 赋能量子计算:突破与未来图景
  • CoverM:contig/bin的相对丰度计算
  • 思路收集文档
  • 高频面试题(含笔试高频算法整理)基本总结回顾61
  • 2.单链表两数相加(java)
  • SpringBoot--自动配置原理详解
  • 从专家编码到神经网络学习:DTM 的符号操作新范式
  • FauxGen:一款由 CodeBuddy 主动构建的假数据生成器
  • 【算法】分支限界法和贪心、动态规划、回溯、分治法的区别是
  • 强化学习笔记(一)基本概念
  • 多模态学习(三)—— ROPE位置编码:从理论到实践
  • 文字溢出省略号显示
  • React 中,闭包陷阱
  • 新华时评:博物馆正以可亲可近替代“高冷范儿”
  • 女生“生理期请病假要脱裤子证明”?高校回应:视频经处理后有失真等问题
  • 陕西榆林:全力推进榆林学院升格榆林大学
  • 缅甸内观冥想的历史漂流:从“人民鸦片”到东方灵修
  • 上海锦江乐园摩天轮正在拆除中,预计5月底6月初拆完
  • 押井守在30年前创造的虚拟世界何以比当下更超前?