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

C++初阶语法——命名空间

前言:C++,即cplusplus,顾名思义,是C语言promax版本,C++兼容C语言。
C++的诞生是因为贝尔实验室的本贾尼等大佬认为C语言的语法坑实在太多,拥有许多不足之处(比如命名冲突,),在长期的使用后感觉多有不便,因此发明了C++,以弥补填上这些语法坑。

目录

  • 命名空间
    • 1.命名空间与域作用限定符::
    • 2.展开命名空间
    • 3.套娃

命名空间

在了解命名空间前,博主先提出一个小问题:我们常常在C++的文件开头包using namespace std;,那么你知道这句话的作用是什么吗? (下文黄底片段)

C语言中存在着命名冲突的问题,假如未来你和你的同事合作负责一个项目,当你们各自负责的库链接起来后就可能出现命名冲突问题,比如你们声明定义了同名的变量,在C语言中,这种时候只能你们之中有一人做出让步,将所有该变量改成别名。C++的命名空间就是为解决这种情况而诞生的。

1.命名空间与域作用限定符::

namespace example  
{//命名空间中可以定义变量/函数/类。int a = 0;int Add(int x,int y){return x+y;}
}
int main()
{//可以将命名空间想象成一个围墙,围墙里面的东西必须要有权限才能访问。//cout << a << endl; 实操后发现并不能打印出a的值cout << example::a << endl; //域作用限定符::  借助该符号可以访问命名空间里的数据。return 0;
}

2.展开命名空间

一.部分展开(授权)

假如我们需要经常使用上面创建的命名空间里的Add函数,但是每次都使用域作用限定符又显得特别繁琐。这是我们就可以展开部分命名空间。
格式为:using example::Add;

namespace example
{int a = 0;int Add(int x,int y){return x+y;}
}
using example::Add;   //展开部分命名空间
int main()
{cout << Add(1,2) << endl; //这里并没有运用与操作限定符,却也可以使用命名空间里的Add函数。return 0;
}

二.全部展开

形式:using namespace example;
std是C++标准库的命名空间,using namespace std;就是全部展开C++标准库,如果没有展开std,那么cout,cin等语法都无法使用

namespace example
{int a = 0;int Add(int x, int y) {return x + y;}
}
using namespace example;  //全部展开命名空间
int main()
{//不用域作用限定符也可访问example里的变量,函数cout << a << endl;cout << Add(1, 2) << endl;return 0;
}

3.套娃

命名空间里可以嵌套使用命名空间,不过一般不会这么使用,但是偶然看到后也不要惊奇。

namespace example
{int a = 0;namespace instance{int a = 1;}int main()
{cout << example::a << endl;  // 0cout << example::instance::a << endl; // 1return 0;
}

总结:综上,命名空间的使用共有3种方式。
今后若是想定义两个甚至多个同名的变量,可以将它们放在不同的命名空间中。
使用好命名空间,会让你在以后的练习和工作中减少许多不必要的麻烦。

文末BB:对哪里有问题的朋友,尽管在评论区留言,若哪里写的有问题,也欢迎朋友们在评论区指出,博主看到后会第一时间确定修改。最后,制作不易,如果对朋友们有帮助的话,希望能动动你们发财的小手给点点赞和关注.
在这里插入图片描述

相关文章:

C++初阶语法——命名空间

前言&#xff1a;C&#xff0c;即cplusplus&#xff0c;顾名思义&#xff0c;是C语言promax版本&#xff0c;C兼容C语言。 C的诞生是因为贝尔实验室的本贾尼等大佬认为C语言的语法坑实在太多&#xff0c;拥有许多不足之处&#xff08;比如命名冲突&#xff0c;&#xff09;&…...

Axwing.878 线性同余方程

题目 给定n组数据ai, bi , mi&#xff0c;对于每组数求出一个xi&#xff0c;使其满足ai * xibi (mod mi)&#xff0c;如果无解则输出impossible。 输入格式 第一行包含整数n。 接下来n行&#xff0c;每行包含一组数据ai , bi , mi。 输出格式 输出共n行&#xff0c;每组数…...

【Pytorch+torchvision】MNIST手写数字识别

深度学习入门项目&#xff0c;含代码详细解析 在本文中&#xff0c;我们将在PyTorch中构建一个简单的卷积神经网络&#xff0c;并使用MNIST数据集训练它识别手写数字。 MNIST包含70,000张手写数字图像: 60,000张用于培训&#xff0c;10,000张用于测试。图像是灰度&#xff08;即…...

spring boot 集成rocketmq

集成Spring Boot和RocketMQ 在现代的微服务架构中&#xff0c;消息队列已经成为一种常见的异步处理模式&#xff0c;它能解决服务间的同步调用、耦合度高、流量高峰等问题。RocketMQ是阿里巴巴开源的一款消息中间件&#xff0c;性能优秀&#xff0c;功能齐全&#xff0c;被广泛…...

redis Hash类型命令

Redis中的Hash类型有多个常用命令可用于对Hash键进行操作。以下是一些常见的Redis Hash类型命令&#xff1a; HSET&#xff1a;设置Hash字段的值。 它将指定字段与相应的值关联起来&#xff0c;如果字段已经存在&#xff0c;则更新其值&#xff0c;如果字段不存在&#xff0c…...

P1194 买礼物(最小生成树)(内附封面)

买礼物 题目描述 又到了一年一度的明明生日了&#xff0c;明明想要买 B B B 样东西&#xff0c;巧的是&#xff0c;这 B B B 样东西价格都是 A A A 元。 但是&#xff0c;商店老板说最近有促销活动&#xff0c;也就是&#xff1a; 如果你买了第 I I I 样东西&#xff0…...

oracle基础语法和备份恢复

Oracle总结 sql命令分类 1.DDL&#xff0c;数据定义语言&#xff0c;create创建/drop销毁 2.DCL&#xff0c;数据库控制语言&#xff0c;grant授权/revoke撤销 3.DML&#xff0c;数据操纵语言&#xff0c;insert/update/delete等sql语句 4.DQL&#xff0c;数据查询语言&am…...

【MATLAB第66期】#源码分享 | 基于MATLAB的PAWN全局敏感性分析模型(有条件参数和无条件参数)

【MATLAB第66期】#源码分享 | 基于MATLAB的PAWN全局敏感性分析模型&#xff08;有条件参数和无条件参数&#xff09; 文献参考 Pianosi, F., Wagener, T., 2015. A simple and efficient method for global sensitivity analysis based on cumulative distribution functions.…...

vue2过渡vue3技术差异点指南

基础点 reactive() 定义响应式变量(仅仅引用类型有效&#xff1a;对象数组map&#xff0c;set)&#xff1a;reactive(),类似于data中return的数据 例子&#xff1a; import { reactive } from vueexport default {setup() {const state reactive({ count: 0 })function in…...

两个多选框(select)之间值的左右上下移动

<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>两个多选框(select)之间值的左右上下移动</title> </head> <script src"https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>&…...

【设计模式】——模板模式

什么是模板模式&#xff1f; 模板方法模式&#xff08;Template Method Pattern&#xff09;&#xff0c;又叫模板模式(Template Pattern)&#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现&#xff0c;但调用将以抽象类中定义的方式进行…...

工业机器视觉系统开发流程简介

需求分析和系统设计&#xff1a;与用户合作&#xff0c;明确系统的功能和性能需求&#xff0c;并设计系统的整体架构。 软、硬件选型&#xff1a;根据需求分析结果&#xff0c;选择适合的软、硬件设备&#xff0c;包括光学传感器、相机、光源、图像采集设备、处理器等。 软件…...

【Unity3D】Renderer Feature简介

1 3D 项目迁移到 URP 项目后出现的问题 3D 项目迁移至 URP 项目后&#xff0c;会出现很多渲染问题&#xff0c;如&#xff1a;材质显示异常、GL 渲染不显示、多 Pass 渲染异常、屏幕后处理异常等问题。下面将针对这些问题给出一些简单的解决方案。 URP 官方教程和 API 详见→Un…...

麻了!包含中科院TOP,共16本期刊被标记为“On Hold”状态!

近日&#xff0c;小编从科睿唯安旗下的“Master Journal List”官网查到&#xff0c;除了知名老牌期刊Chemosphere竟然被标记为“On Hold”状态&#xff0c;目前共有7本SCI期刊&#xff0c;1本SSCI期刊&#xff0c;8本ESCI期刊被标记为“On Hold”&#xff0c;究竟是怎么回事呢…...

2.Flink应用

2.1 数据流 DataStream&#xff1a;DataStream是Flink数据流的核心抽象&#xff0c;其上定义了对数据流的一系列操作DataStreamSource&#xff1a;DataStreamSource 是 DataStream 的 起 点 &#xff0c; DataStreamSource 在StreamExecutionEnvironment 中 创 建 &#xff0c;…...

Matlab进阶绘图第25期—三维密度散点图

三维密度散点图本质上是一种特征渲染的三维散点图&#xff0c;其颜色表示某一点所在区域的密度信息。 除了作图&#xff0c;三维密度散点图绘制的关键还在于密度的计算。 当然&#xff0c;不管是作图还是密度的计算&#xff0c;这些在《Matlab论文插图绘制模板》和《Matlab点…...

C++设计模式之桥接设计模式

文章目录 C桥接设计模式什么是桥接设计模式该模式有什么优缺点优点缺点 如何使用 C桥接设计模式 什么是桥接设计模式 桥接设计模式是一种结构型设计模式&#xff0c;它可以将抽象接口和实现分离开来&#xff0c;以便它们可以独立地变化和扩展。 该模式有什么优缺点 优点 灵…...

论文笔记:SUPERVISED CONTRASTIVE REGRESSION

2022arxiv的论文&#xff0c;没有中&#xff0c;但一作是P大图班本MIT博&#xff0c;可信度应该还是可以的 0 摘要 深度回归模型通常以端到端的方式进行学习&#xff0c;不明确尝试学习具有回归意识的表示。 它们的表示往往是分散的&#xff0c;未能捕捉回归任务的连续性质。…...

Java 多线程并发 CAS 技术详解

一、CAS概念和应用背景 CAS的作用和用途 CAS&#xff08;Compare and Swap&#xff09;是一种并发编程中常用的技术&#xff0c;用于解决多线程环境下的并发访问问题。CAS操作是一种原子操作&#xff0c;它可以提供线程安全性&#xff0c;避免了使用传统锁机制所带来的性能开…...

如何压缩高清PDF文件大小?将PDF文件压缩到最小的三个方法

PDF格式是一种非常常用的文档格式&#xff0c;但是有时候我们需要将PDF文件压缩为更小的大小以便于传输和存储。在本文中&#xff0c;我们将介绍三种PDF压缩的方法&#xff0c;包括在线PDF压缩、利用软件PDF压缩以及使用WPS缩小pdf。 首先&#xff0c;在线PDF压缩是最常用的方…...

量子振荡与拓扑输运调控:从实验测量到主动驾驭

1. 项目概述&#xff1a;从“驾驭”一词说起“如何在量子振荡中驾驭拓扑量子输运&#xff1f;”——当我第一次看到这个问题时&#xff0c;脑海里浮现的不是复杂的公式&#xff0c;而是一个更形象的画面&#xff1a;你驾驶着一艘小船&#xff0c;航行在一片由无数微小漩涡&…...

STM32CubeMX配置I2C驱动ADS1115,从零开始实现高精度电压采集(附完整工程源码)

STM32CubeMX配置I2C驱动ADS1115&#xff1a;从零实现工业级电压采集系统 在嵌入式开发中&#xff0c;高精度模拟信号采集一直是工程师面临的挑战。当我们需要测量微弱电压信号或实现多通道同步采集时&#xff0c;STM32内置ADC往往难以满足精度要求。本文将手把手教你使用STM32C…...

ROS小车转弯卡顿?手把手教你用Python搞定cmd_vel到阿克曼模型的平滑转换

ROS小车转弯卡顿&#xff1f;Python实现cmd_vel到阿克曼模型的平滑转换实战 当你在Gazebo仿真或实际运行ROS控制的阿克曼转向小车时&#xff0c;是否遇到过车体转弯时"一耸一耸"、运动不连贯的尴尬情况&#xff1f;这种卡顿现象往往源于cmd_vel指令到阿克曼运动模型转…...

3步构建企业级数据平台:从零到百万级数据管理的NocoDB实战指南

3步构建企业级数据平台&#xff1a;从零到百万级数据管理的NocoDB实战指南 【免费下载链接】nocodb &#x1f525; &#x1f525; &#x1f525; A Free & Self-hostable Airtable Alternative 项目地址: https://gitcode.com/GitHub_Trending/no/nocodb 在数字化转…...

DsHidMini技术揭秘:Windows平台下DualShock 3控制器用户空间驱动实现方案

DsHidMini技术揭秘&#xff1a;Windows平台下DualShock 3控制器用户空间驱动实现方案 【免费下载链接】DsHidMini Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers 项目地址: https://gitcode.com/gh_mirrors/ds/DsHidMini 在Windows游戏生态系统中…...

如何通过浏览器脚本实现网盘文件直链下载:LinkSwift 完全指南

如何通过浏览器脚本实现网盘文件直链下载&#xff1a;LinkSwift 完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘…...

CentOS8 彻底清除旧MySQL 重装 MySQL8.0

一、前言很多人安装 MySQL8 遇到&#xff1a;旧版本卸载不干净mysqld 启动失败找不到临时密码&#xff08;无mysqld.log&#xff09;密码策略报错 1819本地能连、远程无法连接本文为亲自实操、踩坑总结&#xff0c;命令全部可以直接复制执行&#xff0c;零思维负担。二、环境系…...

Termius中文版:安卓SSH客户端的完整汉化解决方案

Termius中文版&#xff1a;安卓SSH客户端的完整汉化解决方案 【免费下载链接】Termius-zh_CN 汉化版的Termius安卓客户端 项目地址: https://gitcode.com/alongw/Termius-zh_CN 对于需要频繁管理远程服务器的中文用户来说&#xff0c;英文界面的SSH客户端常常成为技术操…...

保姆级教程:用TensorRT 8.5和Python实现ArcFace动态Batch推理(附完整代码)

从零实现ArcFace动态Batch推理&#xff1a;TensorRT 8.5实战手册 人脸识别技术在实际业务场景中往往需要处理海量并发请求&#xff0c;而传统单张图片推理模式难以满足实时性要求。本文将手把手带您完成PyTorch训练的ArcFace模型到TensorRT动态Batch推理的完整部署流程&#xf…...

【C/C++】libusb实战:从零构建ADB USB通信框架

1. 为什么需要自己实现ADB USB通信&#xff1f; 很多开发者第一次接触ADB时&#xff0c;都是直接使用官方提供的adb命令行工具。这个工具确实方便&#xff0c;但当你需要深度定制Android设备调试流程&#xff0c;或者开发自动化测试框架时&#xff0c;官方工具就显得不够灵活了…...