【C++】using namespace std 到底什么意思

📢博客主页:https://blog.csdn.net/2301_779549673
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文作为 JohnKi 的学习笔记,引用了部分大佬的案例
📢未来很长,值得我们全力奔赴更美好的生活✨

在这里插入图片描述

在这里插入图片描述

文章目录

  • 📢前言
  • 🏳️‍🌈什么是 namespace
  • 🏳️‍🌈如何定义 namespace
    • ❤️定义
      • 嵌套
      • 融合
  • 🏳️‍🌈如何使用 namespace
  • 👥总结


📢前言

要建造简单的房屋,首先要打地基、搭框架。如果一开始没有牢固的结构,后面就很难建造窗子、门框、圆屋顶和镶木地板的舞厅等。同样,学习计算机语言时,应从程序的基本结构开始学起。只有这样,才能一步一步了解其具体细节,如循环和对象等。

这篇博客,笔者就介绍一下由 C语言 转到 C++ 时,我们第一个会遇到的语句即 using namespace std ,并着重介绍一下其中的含义和由来


🏳️‍🌈什么是 namespace

Namespace(命名空间)是在计算机科学中常见的概念,用于表示符号的命名范围或作用域。在编程中,命名空间通常用于避免命名冲突,即当多个库、模块或包中存在相同名称的变量、函数或类时,通过将它们放置在不同的命名空间中来区分它们。

我们可以先看一下下面这块C语言的代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int rand = 1;int main()
{printf("%d", rand);return 0;
}

如果不存在什么命名问题的话,这里会出现的结果将是1,但是我们实操会发现出现重定义的错误提示
在这里插入图片描述

为什么会出现?

那是因为在stdlib.h库中也存在rand这个变量名

因此

在当项目量过大,项目人数过多时,时常会出现一些大佬们命名重复的情况,为了避免这个情况,于是就在C++中引用了namespace,用来存放和保证命名库不出错,解决命名冲突


🏳️‍🌈如何定义 namespace

❤️定义

定义语法:

namespace N1
{//支持变量int a = 1;//支持函数int fun(){return 1;}//支持结构体struct S{int s;};
}

我们通过 namespace + 命令空间名 + {} 在花括号中填入想要命名的变量就可以了

基本上的类型都是支持的

嵌套

namespace N2
{int a = 1;namespace N3{int b = 1;}
}

不仅如此namespace是支持嵌套使用的,就比如这里在N2空间内我们又创建了一个N3的命名空间

融合

同一个工程中,允许存在多个相同名称的命名空间,编译器最后会把他们合成一个命名空间

namespace N4
{int a = 1;
}
namespace N4
{int b = 2;
}

融合结果

namespace N4
{int a = 1;int b = 2;
}

🏳️‍🌈如何使用 namespace

既然已经知道了namespace的定义方法,那自然需要知道如何使用了

这里就可以介绍一下using namespace std的具体含义了

这其实就是一个名为std的命名空间的直接使用,std可以看为C++语法的标准数据命名空间,就像C语言中的stdio.h一样,在C++中常使用的count,cin等都是出自于这个命名库中,C++标准库中的函数或者对象都是在命名空间std中定义的。

我们使用using namespace std就相当于把C++标准库外壳拆除,因此就可以使用里面的对象和函数了

  • 这就是方法1直接使用,using namespace + 命名空间名
#include<stdio.h>
namespace N 
{int a = 10;int b = 20;
}
using namespace N;
int main()
{printf("%d\n", a); // 正常打印return 0; 
}
  • 而方法2则是使用using将命名空间中成员引入,using + 命名空间名 + :: +成员名
using N::b;
int main()
{printf("%d\n", b);return 0; 
}

这样如果仅仅是需要利用命名空间内的指定成员名直接这样引用就行了

  • 方法3就是命名空间名 + :: + 变量名

这里可以引用一下全局变量局部变量

比如下面这个例子

#include<stdio.h>
int a = 0;
int main()
{int a = 1;printf("%d\n",a);return 0;
}

这部分代码没有出错,因为在指定作用域内,优先局部变量

但如果我们要在这部分域内使用全局变量又该怎么做呢,就需要在变量名前加上::就行了

#include <iostream>
using namespace std;
int a = 0;
int main()
{int a = 1;printf("访问局部变量(a):%d\n",a);printf("访问全局变量(::a):%d\n",::a);return 0;
}

那如果在C++中,有很多个命名空间呢,那就是用方法3命名空间名 + :: + 变量名

#include <iostream>
using namespace std;
int main()
{cout << 1 << endl;
}

这部分代码就可以改成

#include <iostream>
int main()
{std::cout << 1<< std::endl;
}

👥总结

using namespace std; 是一个用于C++编程的命名空间指令,它通常出现在C++程序的顶部。它的作用是将标准C++库中的所有标识符引入到当前的命名空间中,使得你可以直接使用这些标识符,而无需在前面添加命名空间限定符 std::。

具体来说,当你编写C++程序并使用标准C++库中的类、函数、对象或其他标识符时,通常需要添加 using namespace 命名空间名;using 命名空间名 变量名 或使用 命名空间名:: 前缀来限定命名空间。


本篇博文对 C++中namespace 做了一个较为详细的介绍,不知道对你有没有帮助呢

觉得博主写得还不错的三连支持下吧!会继续努力的~

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/367531.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】多态详解

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 一、多态概念 二、多态的定义及实现 1. 多态的构成条件 2. 虚函数 2.1 什么是虚函数 2.2 虚函数的重写 2.3 虚函数重写的两个…

实战项目——用Java实现图书管理系统

前言 首先既然是管理系统&#xff0c;那咱们就要实现以下这几个功能了--> 分析 1.首先是用户分为两种&#xff0c;一个是管理员&#xff0c;另一个是普通用户&#xff0c;既如此&#xff0c;可以定义一个用户类&#xff08;user&#xff09;&#xff0c;在定义管理员类&am…

哈哈看到这条消息感觉就像是打开了窗户

在这个信息爆炸的时代&#xff0c;每一条动态可能成为我们情绪的小小触发器。今天&#xff0c;当我无意间滑过那条由杜海涛亲自发布的“自曝式”消息时&#xff0c;不禁心头一颤——如果这是我的另一半&#xff0c;哎呀&#xff0c;那画面&#xff0c;简直比烧烤摊还要“热辣”…

多微信运营管理方案

微信作为一款社交通讯软件&#xff0c;已经成为人们日常生活中不可缺少的工具。不仅个人&#xff0c;很多企业都用微信来联系客户、维护客户和营销&#xff0c;这自然而然就会有很多微信账号、手机也多&#xff0c;那管理起来就会带来很多的不便&#xff0c;而多微信私域管理系…

K8s的基本使用和认识

目录 介绍 控制端 Node(节点) 控制端与节点的关系图 基本使用 创建和运行资源 查找和参看资源 修改和删除资源 介绍 控制端 api-server(api)是集群的核心是k8s中最重要的组件,因为它是实现声明式api的关键 kubernetes api-server的核心功能是提供了Kubernetes各类资…

7.6、指针和数组

代码 #include <iostream> using namespace std;int main() {//指针和数组//利用指针访问数组中的元素int arr[10] { 1,2,3,4,5,6,7,8,9,10 };cout << "第一个元素为&#xff1a;" << arr[0] << endl;int * p arr;//arr就是数组首地址co…

Python爬取国家医保平台公开数据

国家医保服务平台数据爬取python爬虫数据爬取医疗公开数据 定点医疗机构查询定点零售药店查询医保机构查询药品分类与代码查询 等等&#xff0c;数据都能爬 接口地址&#xff1a;/ebus/fuwu/api/nthl/api/CommQuery/queryFixedHospital 签名参数&#xff1a;signData {dat…

中国国产AI芯片的崛起

一、CUDA的垄断 当讨论半导体行业面临的挑战时&#xff0c;你首先想到的是什么&#xff1f;光刻机&#xff1f;3纳米或者5纳米技术&#xff1f;我们无法生产的完美方形芯片&#xff1f;是的&#xff0c;但也不完全是。 人们经常把半导体芯片归类为硬件产业&#xff0c;但实际上…

Vue3的模板语法插值表达式用法

在template中输入“5 3” &#xff0c;是没有运算能力的&#xff0c;只会把字符直接显示出来&#xff0c;代码如下&#xff1a; <template><view>这是demo</view><view>5 3</view><navigator open-type"navigateBack"><vi…

Opencv+python模板匹配

我们经常玩匹配图像或者找相似&#xff0c;opencv可以很好实现这个简单的小功能。 模板是被查找目标的图像&#xff0c;查找模板在原始图像中的哪个位置的过程就叫模板匹配。OpenCV提供的matchTemplate()方法就是模板匹配方法&#xff0c;其语法如下&#xff1a; result cv2.…

SerialportToTcp①

窗体 效果&#xff1a;串口和网口旁边的是panel当客户端或者服务器发送消息的时候会闪烁&#xff0c;下面的的textbox当接收到接受或者发送的数据会增加数量&#xff0c;心跳机制单选框可以开关&#xff0c;可设置心跳间隔和内容&#xff0c;重置按钮重置串口数据&#xff0c;…

轻度图像处理工具,匹敌photoshop

一、简介 1、一款功能强大的在线图片编辑工具,用户可以将其安装为渐进式网页应用(PWA)。它提供了与 Photoshop 相似的核心功能,能够满足大多数图像编辑需求,非常适合那些不愿或无法安装 Photoshop 的用户。即使使用免费版本,用户也能享受所有功能,是轻度图像处理的理想选…

python(基础语法,pandas,numpy,正则表达式,数据预处理)

python学习推荐网址&#xff1a; 白月黑羽 一、语法基础 目标&#xff1a; • list、tuple、set、dict的基本用法 • 内置函数 len&#xff08;&#xff09;&#xff0c; eval&#xff08;&#xff09;&#xff0c;range&#xff08;&#xff09;&#xff0c;sort&#xff08;…

Django 一对一关系

作用&#xff1a; 两个数据库表建立外键关系当外键表的数据被删除时&#xff0c;主表的数据也会一并删除。 1&#xff0c;添加表模型 Test/app8/views.pyfrom django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email …

【C语言】学生管理系统:完整模拟与实现

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 &#x1f525;引言 本篇文章为修改了在校期间实训报告&#xff0c;使用C…

【网络架构】lvs集群

目录 一、集群与分布式 1.1 集群介绍 1.2 分布式系统 1.3 集群设计原则 二、LVS 2.1 lvs工作原理 2.2 lvs集群体系架构 ​编辑 2.3 lvs功能及组织架构 2.4 lvs集群类型中术语 三、LVS工作模式和命令 3.1 lvs集群的工作模式 3.1.1 lvs的nat模式 3.1.2 lvs的dr模式 …

为什么有些人思考得多,决策反而不好?避免过度拟合的终极指南:决策高手的秘密:灰度认知,黑白决策

在决策过程中&#xff0c;过度关注细节可能导致决策效果不佳&#xff0c;这被称为“过度拟合”。为了避免这种情况&#xff0c;我们需要进行“灰度认知&#xff0c;黑白决策”&#xff0c;即接受不确定性&#xff0c;关注整体趋势&#xff0c;设定明确目标&#xff0c;简化选择…

【JD-GUI】MacOS 中使用Java反编译工具JD-GUI

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明概念理解一、基础环境说明1.1 硬件环境1.2 软件环境 二、下载与安装2.1 选择对应版本2.2 解压运行排除异常&#xff1a;2.3 关于…

Geotools系列说明之LineString仿高德航路截取说明

需求分析 我们在做webgl的时候经常会遇到这样的需求&#xff0c;计算给定航路的拥堵情况&#xff0c;不同的拥堵显示不同的颜色&#xff0c;航路截取计算等等。基于这类问题统一都可以使用LineString进行处理 实现思路 如上图所示&#xff0c;航路是几个关键的点然后练成线&a…

05 docker 镜像

目录 1. 镜像 2. 联合文件系统 3. docker镜像加载原理 4. 镜像分层 镜像分层的优势 5. 容器层 1. 镜像 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好行程一个可交付的运行环境&#xf…