C++笔记:命名空间

引入:

平常,我们在进行C++编写时,一般我们都会默认在开始去写这样的代码:

#include<iostream>//包含头文件

using namespace std;//展开命名空间

这里就出现了与C语言不同的地方:这里的命名空间就是C++对于C语言进行优化的一个地方。

请看下面的代码来体会这一优化:

#include<stdlib.h>
#include<stdio.h>

int srand = 10;

int main()
{
	printf("%d ", srand);
	return 0;
}

这里我们运行会发现这样的错误:

错误原因:

这里会出现这样的错误是应为我们头文件里面有一个叫srand 的函数,这会导致命名重复的问题。当我们在平时写一些比较小的项目时可以轻易避免命名重复问题,但是当代码量上来问题后就会显现。为此我们的C++祖师爷本贾尼·斯特劳斯特卢普就创建了命名空间这一新的概念。

错误去除:

这里我们可以定义自己的命名空间来定义我们需要的名称:

#include<stdlib.h>
#include<stdio.h>

namespace laowang //定义一个叫“laowang”的命名空间
{
int srand = 10;
}


int main()
{
	printf("%d ", laowang::srand);//"::"是对命名空间内变量引用的符号
	return 0;
}

这时我们会发现报错就没有了。

理解:

这里的命名空间就相当于一个单独且封闭的空间,当我们不将其打开或将其数据取出,我们就无法访问内部的数据。这里的laowang::就是取出其内部数据,而我们的using namespace laowang;就是将该命名空间打开。

#include<stdio.h>

namespace laowang //定义一个叫“laowang”的命名空间
{
int srand = 10;
}
using namespace laowang;//打开命名空间,删去将会报错

int main()
{
	printf("%d ", srand);
	//在没有"::"对命名空间内变量引用的符号时,需要打开命名空间对其内部数据进行访问
	return 0;
}

总结:

所以我们在写C++时写的“using namesp std就是打开一个叫"std”的命名空间,这是C++的标准命名空间,我们打开它来用其内部的函数等数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:Patch补丁、Diff使用

what的问题 diff命令&#xff0c;记录两个文件的差别&#xff0c;通过diff得到一个patch文件&#xff0c;也应用patch到另外一个文件&#xff0c;通过patch命令 diff and patch are intended to be used on text files. why的问题 Reason 1: diff can be useful by itself t…

如何实现多个PDF文件合并为一个PDF文件

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ hi&#xff0c;我是白特。 最近看到一个功能&#xff0c;十分感兴趣&#xff0c;也就是我们要将多个文件服务器中的PDF文件合并为一个PDF文件并以此进行下载打印操作。 那么直接让我们一起看下它的实现思路吧。 …

OpenHarmony实战:硬件适配之HCS应用

一、HCS 配置管理 HCS(HDF Configuration Source)是 HDF 驱动框架的配置描述参数文件&#xff0c;内容以 Key-Value 为主要形式。它实现了配置代码与驱动代码解耦&#xff0c;便于开发者进行配置管理。 HC-GEN(HDF Configuration Generator)是 HCS 配置转换工具&#xff0c;可…

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别

Git、TortoiseGit、SVN、TortoiseSVN 的关系和区别 &#xff08;二&#xff09;Git&#xff08;分布式版本控制系统&#xff09;:&#xff08;二&#xff09;SVN&#xff08;集中式版本控制系统&#xff09;&#xff08;三&#xff09;TortoiseGit一、下载安装 git二、安装过程…

“转行做程序员”很难?这里有4个建议

近几年来&#xff0c;传统行业多处于经济下行&#xff0c;加上互联网行业的赚钱效应&#xff0c;想要转行到这一行的人越来越多&#xff0c;其中程序员这个行业更是很多人梦寐以求的。 但另一方面&#xff0c;我们也发现&#xff0c;这些想要转行的同学们往往会遇到很多困扰。…

企业员工在线培训系统功能介绍

随着信息技术的飞速发展&#xff0c;企业员工培训方式正逐步从传统的面授转向灵活高效的在线培训。一个综合性的企业员工在线培训系统能够为员工提供多样化的学习资源、便捷的学习途径和有效的学习监督&#xff0c;以下是该系统的主要功能详细介绍&#xff1a; 1. 课程功能 线…

如何应对光模块故障,只需一条命令!

你们好&#xff0c;我的网工朋友。 是设备就有故障&#xff0c;光模块也不例外&#xff0c;而且很多项目的故障首先要排除光模块的问题。 像光模块型号选用是否正确&#xff1f; 使用的跳线是否正确&#xff1f; 交换机接口是否用匹配&#xff1f; ....各种各样的问题&…

MySQL中count(*) 和 count(1)区别

MySQL 中 count(*) 和 count(1) 的异同 count() 函数的基本原理 语法&#xff1a; COUNT(expr)其中&#xff1a; expr 可以是字段名、常量、表达式或星号 (*)。 用法&#xff1a; count() 函数用于统计满足特定条件的记录数量。它可以有以下几种用法&#xff1a; 1. 统计…

【带你了解下前端开发语言有那些】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

JavaEE初阶之线程安全(一)

目录 题外话 正题 1.线程调度是随机的 2.修改共享数据 知识点 线程同步机制 线程异步机制 举例说明 synchronized() 知识点 举例说明 举例代码详解 死锁 举个例子: 代码 小结 题外话 这两天忽冷忽热的感冒了,昨天状态特别不好断更了一天,今天继续加油! 我会把…

【RT_Thread】---stm32f407zgt6使用env配置工程

用rt_thread env配置工程 1. git rt_thread 源码 2.找到对应芯片厂家扳机支持包 3 重新命名一个自己项目的工程 4 打开env 配置驱动 具体参考官方&#xff1a;Env 用户手册 (rt-thread.org) 5 修改路径为英文 6 修改完boad init 就应该可以用了(还有系统时钟不然会有问题)…

基于stm32的h5的spi屏幕调试

基于stm32的h5的spi屏幕调试 本文目标&#xff1a;基于stm32的基础实验 按照本文的描述&#xff0c;应该可以跑通实验并举一反三。 先决条件&#xff1a;装有编译和集成的开发环境&#xff0c;比如&#xff1a;Keil uVision5、STM32CubeMX 使用外设&#xff1a;GPIO、SPI …

Redis中的复制功能(一)

复制 概述 在Redis中&#xff0c;用户可以通过执行SLAVEOF命令或者设置slaveof选项&#xff0c;让一个服务器去复制(replicate)另一个服务器&#xff0c;我们称呼被复制的服务器为主服务器(master)&#xff0c;而对主服务器进行复制的服务器则被称为从服务器(slave),如图所示…

Python 全栈体系【四阶】(十八)

第五章 深度学习 一、基本理论 4. 神经网络的改进 4.1 神经网络的局限 全连接神经网络的局限&#xff08;一&#xff09; 未考虑数据的“形状”&#xff0c;会破坏数据空间结构。例如&#xff0c;输入数据是图像时&#xff0c;图像通常是高长通道方向上的 3 维形状。但是&a…

基于springboot+vue实现的房源出租信息系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

Java学习之类和对象、内存底层

目录 表格结构和类结构 表格的动作和类的方法 与面向过程的区别 具体实现 对象和类的详解 类的定义 属性&#xff08;field 成员变量&#xff09; 方法 示例--编写简单的学生类 简单内存分析(理解面向对象) 构造方法(构造器 constructor) 声明格式&#xff1a; 四…

深入探究Shrio反序列化漏洞

Shrio反序列化漏洞 什么是shrio反序列化漏洞环境搭建漏洞判断rememberMe解密流程代码分析第一层解密第二层解密2.1层解密2.2层解密 exp 什么是shrio反序列化漏洞 Shiro是Apache的一个强大且易用的Java安全框架,用于执行身份验证、授权、密码和会话管理。使用 Shiro 易于理解的…

FittenChat:程序员写代码的最好辅助利器,没有之一

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师&#xff0c;大模型&#xff0c;爬虫、ACM算法 &#x1f492; 公众号&#xff…

如何评估基于指令微调的视觉语言模型的各项能力-MMBench论文解读

1. 传统基准的固有局限 VQAv2:视觉问题回答数据集,主要用于评估视觉理解与推理能力。COCO Caption:图像描述生成数据集,用于评估模型对图像内容的理解与描述能力。GQA:结合常识的视觉问题回答数据集。OK-VQA:需要外部知识的视觉问题回答数据集。TextVQA:图像中包含文本的…

Linux系统网络的实时性评估

目录 1.使用 cyclictest 测试系统实时性2.测试系统通信实时性2.1 PingPlotter2.2 使用 ping 测试通讯实时性 3. 使用 iperf 测试带宽4.网络性能测试 1.使用 cyclictest 测试系统实时性 安装cyclictest sudo apt-get update sudo apt-get install rt-testscyclictest -p 99 -i…