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

C++ 名称空间

一、名称空间

1.1、引入名称空间的背景

在C++中的名称可以是变量,函数,类以及类的成员。随着项目的增大,名称相互冲突的可能性也在增大。使用多个厂商的类库时,可能导致名称冲突。例如,两个库都定义了名为List,Tree和Node的类,但是定义的方式不兼容。用户可能希望使用一个库的List类,而是用另一个库的Tree类,这种冲突称为名称空间问题。C++标准提供了名称空间工具,以便更好的控制名称的作用域。

1.2、创建名称空间

可以使用namespace关键字创建名称空间,如下:

namespace Jack {int age;string name;
}

1.3、名称空间特点

1.3.1、名称空间可以是全局的,也可以位于另一个名称空间中,但是不能位于代码块中

在默认的情况下,在名称空间声明的名称的连接性为外部的。除了用户定义的名称空间外,还存在另一个名称空间–全局名称空间,它对应于文件级声明区域。因此、前面所说的全局变量现在被描述为位于全局名称空间中。下面是一个名称空间的举例,例如:

#include <iostream>
using namespace std;// 第一个命名空间
namespace first_space{void func(){cout << "Inside first_space" << endl;}
}
// 第二个命名空间
namespace second_space{void func(){cout << "Inside second_space" << endl;}
}
using namespace first_space;
int main ()
{// 调用第一个命名空间中的函数func();return 0;
}

1.3.2、命名空间可以嵌套

可以在一个命名空间中定义另一个命名空间,例如:

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

可以通过使用 :: 运算符来访问嵌套的命名空间中的成员

// 访问 namespace_name2 中的成员
using namespace namespace_name1::namespace_name2;// 访问 namespace:name1 中的成员
using namespace namespace_name1;

1.3.3、名称空间是开放的,即可以把名称加入到已有的名称空间

这个特性可以理解成名称空间可以定义在几个不同的部分中,可以在几个不同的头文件中声明函数原型,在.ccp文件中提供函数定义。例如:

// my_header1.h
namespace Jack{void display();
}// my_header2.h
namespace Jack{void backtrace();
}// my_func.cpp
#include "my_header1.h"
#include "my_header2.h"namespace Jack{void backtrace() {// ...}void display() {// ...}
}

1.3.4、未命名的名称空间

可以通过省略名称空间的名称来创建未命名的名称空间,例如:

namespace {int count;
}

这就像后面跟着using指令一样,也就是说,在该名称空间中声明的名称的潜在作用域为:从声明点到该声明区域的末尾。从这个方面来看与全局变量类似。然而,由于这种名称空间没有名称,因此,不能显示的使用using编译指令或using声明来使它在其他位置都可以使用。具体来说,不能在未命名名称空间所属文件之外的其他文件中,使用该名称空间中的名称。这提供了连接性为内部的静态变量的替代品,例如:

namespace {int count;
}void main() {// ...
}// 上面的声明内部静态变量的方法与下面的方法等价
static int count;void main() {// ...
}

相关文章:

C++ 名称空间

一、名称空间 1.1、引入名称空间的背景 在C中的名称可以是变量&#xff0c;函数&#xff0c;类以及类的成员。随着项目的增大&#xff0c;名称相互冲突的可能性也在增大。使用多个厂商的类库时&#xff0c;可能导致名称冲突。例如&#xff0c;两个库都定义了名为List&#xff…...

作为一名普通的java程序员,我想和大家分享一下4年来的工作内容

一直有小伙伴想了解更多关于我的工作内容&#xff0c;所以今天我来分享一下我作为一名普通java程序员&#xff0c;4年来工作内容发生了哪些变化&#xff0c;以及我有什么感悟。 我是16届毕业生&#xff0c;我的第一份工作是做外包&#xff0c;第一年的时间里测试偏多&#xff…...

CyberLink的专业视频编辑软件ActionDirector Ultra 3.0版本在win10系统的下载与安装配置教程

目录 前言一、ActionDirector Ultra安装二、使用配置总结 前言 ActionDirector Ultra是CyberLink公司开发的专业视频编辑软件&#xff0c;旨在帮助用户创作高质量的运动和冒险视频。该工具提供了一些先进的特效和编辑工具&#xff0c;让用户能够轻松地剪辑、修剪、调整颜色和添…...

在外远程访问公司局域网用友畅捷通T财务软件 - 远程办公

文章目录 前言1.本地访问简介2. cpolar内网穿透3. 公网远程访问4. 固定公网地址 前言 用友畅捷通T适用于异地多组织、多机构对企业财务汇总的管理需求&#xff1b;全面支持企业对远程仓库、异地办事处的管理需求&#xff1b;全面满足企业财务业务一体化管理需求。企业一般将其…...

VariantAutoencoder(VAE)中使用生成好的模型进行声音生成

文章目录 概述一、soundgenerator.py文件soundgenerator.py实现代码一、convert_spectrogram_to_audio方法librosa.db_to_amplitudelibrosa.istft generate方法 二、generate.py文件实现代码load_fsdd函数说明select_spectrogram函数说明save_signals函数说明main函数说明 三、…...

C++数据封装以及定义结构的详细讲解鸭~

名字&#xff1a;阿玥的小东东 博客主页&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 定义结构 访问结构成员 结构作为函数参数 指向结构的指针 typedef 关键字 C 数据封装 数据封装的实例 设计策略 C 类 &…...

MySql 数据库的锁机制和原理

MySQL是一种流行的关系型数据库管理系统&#xff0c;广泛应用于各种Web应用程序和企业级应用程序中。在MySQL中&#xff0c;锁是一种用于控制并发访问的机制&#xff0c;它可以保证数据的一致性和完整性。本文将介绍MySQL的锁机制及原理&#xff0c;包括锁的类型、级别和实现原…...

try catch finally 里面有return的执行顺序

目录 实例结论 实例 1.try和catch中有return时&#xff0c;finally里面的语句会被执行吗 我们可以来分别看看 (1)执行try中的return时 public class Solution {public static int show() {try {return 1;}finally{System.out.println("finally模块被执行");}}publi…...

美团前高级测试工程师教你如何使用web自动化测试

一、自动化测试基本介绍 1 自动化测试概述&#xff1a; 什么是自动化测试&#xff1f;一般说来所有能替代人工测试的方式都属于自动化测试&#xff0c;即通过工具和脚本来模拟人执行用例的过程。 2 自动化测试的作用 减少软件测试时间与成本改进软件质量 通过扩大测试覆盖率…...

MySql.Data.dll 因版本问题造成报错的处理

NetCore 链接MySQL 报 Character set ‘utf8mb3‘ is not supported by .Net Framework 异常解决_character set utf8mb3_csdn_aspnet的博客-CSDN博客 查看mysql版本号&#xff0c;两种办法&#xff1a; 第一种在数据库中执行查询&#xff1a;SELECT version; 第二种使用工具…...

囚徒困境——从博弈论的角度解释“美女配丑男”

前言 有一种很常见的现象&#xff0c;美女配丑男。其实这种现象背后是有一定科学原理的。本文将从博弈论的角度&#xff0c;从囚徒困境出发解释这一现象产生的原因。 囚徒困境 囚徒困境的经典案例 先来介绍一下经典的囚徒困境。 警方逮捕甲、乙两名嫌疑犯&#xff0c;但没有…...

运算符重载函数作为类的成员函数——有理数的约分

目录 一、题目 二、代码 三、算法分析 &#xff08;一&#xff09;数学表达式 &#xff08;二&#xff09; 代码实现 一&#xff09;运算符重载函数 二&#xff09;优化函数&#xff08;实现有理数约分&#xff09; 一、题目 通过运算符重载为类的成员函数来实现两个有…...

mysql数据库的内置函数--7

目录 内置函数 日期函数 字符串函数 数学函数 其它函数 内置函数 在mysql中这些函数用select进行使用 日期函数 函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()从日期或日期/时间表达式中提取日期部分TIME()从日期或日期/时间…...

DS3800HPIB 有效执行任务的所有程序

DS3800HPIB是通用电气公司生产的Speedtronic Mark IV系列的一部分。这DS3800HPIB是一种大型电路板&#xff0c;具有八个连接端子&#xff0c;电路板两侧的尺寸各不相同。左下角有一个红色小方块&#xff0c;上面有一个拨动开关。这DS3800HPIB有大约50个天蓝色的小二极管。这DS3…...

图像比对、人像比对和人脸识别的区别是什么?

图像比对、人像比对和人脸识别都是图像处理技术&#xff0c;但是它们的实现方式和应用场景均有所不同。 图像比对 图像比对是指通过计算机视觉技术将两张或多张图片进行相似度比较。主要包括图像特征提取、匹配和评估等步骤&#xff0c;通常使用神经网络等深度学习技术来实现…...

python中的抽象基类

目录 协议和鸭子类型抽象基类定义抽象基类使用抽象基类直接继承通过注册&#xff08;register&#xff09; __subclasshook__魔法方法 协议和鸭子类型 python中有大量的魔法方法&#xff0c;python所谓基于协议编程&#xff0c;就是依赖这些魔法方法。 什么意思呢&#xff1f…...

耗时几个月,终于决定把原本想用于商业的系统开源了

前言 嗨&#xff0c;大家好&#xff0c;我是希留&#xff0c;一个被迫致力于全栈开发的老菜鸟。 今天又来给小伙伴们分享一个基于 SpringBoot Vue 实现的前后端分离后台管理系统项目&#xff1b; 简介 这个项目是基于xiliu-tenant脚手架项目搭建而成&#xff0c;原本是帮朋…...

HarmonyOS应用端云一体化开发主要流程

图示 主要步骤 序号 阶段 任务 说明 1 创建端云一体化开发工程 选择工程类型与云开发模板 确定工程类型&#xff1a;选择“Application”或“Atomic Service”页签&#xff0c;确定创建的是HarmonyOS应用工程还是原子化服务工程。选择云开发模板&#xff0c;包括通用云开…...

NoSQL之 Redis配置与优化

NoSQL之 Redis配置与优化 ---------------------- 关系数据库与非关系型数据库 ---------------------------------------- ●关系型数据库&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一…...

Redis哨兵模式

1.哨兵模式是什么 解释一 哨兵巡查监控 master主机是否故障&#xff0c;如果故障了&#xff0c;根据投票数自动将一个从库转换为新数据库&#xff0c;继续对外服务。 解释二 监控redis 的运行状态&#xff0c;包括master和slave当master宕机后&#xff0c;能自动将slave切换…...

Lychee-Rerank与Node.js后端集成指南:构建高性能排序服务

Lychee-Rerank与Node.js后端集成指南&#xff1a;构建高性能排序服务 如果你正在用Node.js开发一个搜索或者推荐系统&#xff0c;是不是经常遇到这样的问题&#xff1a;用户搜“苹果”&#xff0c;结果既出现了水果&#xff0c;也出现了手机&#xff0c;甚至还有电影&#xff…...

QLVideo多语言本地化:从零到全球的开发者协作实践

QLVideo多语言本地化&#xff1a;从零到全球的开发者协作实践 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcode.co…...

终极光影增强指南:如何用Photon-GAMS将Minecraft变成电影级视觉盛宴

终极光影增强指南&#xff1a;如何用Photon-GAMS将Minecraft变成电影级视觉盛宴 【免费下载链接】Photon-GAMS Personal fork of Photon shaders 项目地址: https://gitcode.com/gh_mirrors/ph/Photon-GAMS 还在为Minecraft方块世界的单调画面感到乏味吗&#xff1f;想要…...

Qwen3.5-9B-AWQ-4bit效果惊艳分享:手写体混合印刷体截图的高准度识别

Qwen3.5-9B-AWQ-4bit效果惊艳分享&#xff1a;手写体混合印刷体截图的高准度识别 1. 模型能力概述 Qwen3.5-9B-AWQ-4bit是一款支持图像理解的多模态模型&#xff0c;能够结合上传图片与文字提示词&#xff0c;输出中文分析结果。这个模型特别擅长处理图片主体识别、场景描述、…...

BLIP 实战手册:从零到一完成 Image-Text Captioning 任务微调

1. 认识BLIP与Image-Text Captioning 第一次接触BLIP模型时&#xff0c;我被它处理图像和文本的能力惊艳到了。想象一下&#xff0c;你给模型一张猫咪晒太阳的照片&#xff0c;它能自动生成"一只橘猫在窗台上慵懒地晒太阳"这样的描述——这就是Image-Text Captioning…...

all-MiniLM-L6-v2技术解析:为何22.7MB模型能在256token长度下保持鲁棒性

all-MiniLM-L6-v2技术解析&#xff1a;为何22.7MB模型能在256token长度下保持鲁棒性 1. 模型架构与设计理念 all-MiniLM-L6-v2是一个令人印象深刻的轻量级句子嵌入模型&#xff0c;它基于BERT架构但进行了精心的优化设计。这个模型的核心目标是在保持高质量语义表示能力的同时…...

Phi-3 Forest Lab免配置环境:Docker镜像+Streamlit美学前端部署

Phi-3 Forest Lab免配置环境&#xff1a;Docker镜像Streamlit美学前端部署 1. 项目概述 "在森林的深处&#xff0c;听见智慧的呼吸。"Phi-3 Forest Lab是一个基于微软Phi-3 Mini 128K Instruct模型构建的极简主义AI对话终端&#xff0c;将前沿AI技术与自然美学设计…...

5步搞定Windows 11安装失败:MediaCreationTool.bat终极指南

5步搞定Windows 11安装失败&#xff1a;MediaCreationTool.bat终极指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

抖音批量下载工具实战指南:3步实现高效内容采集与智能管理

抖音批量下载工具实战指南&#xff1a;3步实现高效内容采集与智能管理 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

保姆级教程:手把手教你部署阿里开源Qwen3-ASR语音识别模型

保姆级教程&#xff1a;手把手教你部署阿里开源Qwen3-ASR语音识别模型 1. 概述 Qwen3-ASR是阿里开源的高性能语音识别模型&#xff0c;基于Qwen3-ASR-1.7B架构&#xff0c;支持30多种语言和22种中文方言识别。本教程将带你从零开始&#xff0c;一步步完成模型的部署和使用。 …...