【C++初阶】--入门基础(一)

news2024/11/19 17:26:19

目录

 

一.命名空间

1.前言引入

2.namespace关键字 

(1)前言

(2)域作用限定符 ::

(3)命名空间域namespace

① 细节理解

② 命名空间的名称相同

③命名空间的嵌套 

(4)命名空间的使用 

① 加命名空间名称及作用域限定符

②使用using将命名空间中某个成员引入

③ 使用using namespace 命名空间名称 引入


一.命名空间

1.前言引入

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。(比如在C语言中不能使用相同的函数名来定义不同的函数或者C函数库已经存在的函数名不能重新用来定义变量

#include <stdio.h>
#include <stdlib.h>
int rand = 10;

int main()
{
   printf("%d\n", rand);
   return 0;
}
  • 报错 

  • 原因 

 头文件stdlib.h在预编译的时候就会被展开到全局域中,所以在调用main函数时已经在全局域中找到了rand函数(的地址)。

2.namespace关键字 

(1)前言

int x = 0;
int main()
{
	int x = 1;
	printf("%d", x);
	return 0;
}
输出结果为:1

 观察以上代码,当全局变脸和局部变量同时存在时,编译器进行查找时会就近原则,优先使用局部变量。而如果我们一定要使用全局变量呢?接下来引入域作用限定符

(2)域作用限定符 ::

int x = 0;
int main()
{
	int x = 1;
	printf("%d\n", x);
	printf("%d\n", ::x);这里的最终结果为:0
	return 0;
}

当 :: 左侧什么也没有给的时候,默认所指的是全局域

(3)命名空间域namespace

语法构成:定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员

  • 示例 

 这里是为什么呢? 

① 细节理解

这里我们要知道编译器的搜索原则是:1.当前局部域 2.全局域3.如果指定了一个域,就要直接去指定的域里面去搜索。

这里之所以找不到 x 这个标识符,是因为我们新增加了一个命名空间域bit1,如果我们想要访问到x,就要到这个命名空间域去访问。

可以将命名空间域所处的位置理解为:

命名空间域也是处于全局域中,但是被上了一把锁,在全局域中想要访问它需要一把特定的钥匙来开启这把锁进行访问

② 命名空间的名称相同

当多个命名空间的名称相同时,实际上会进行命名空间的合并,由上面的报错可以知道,两个命名空间合并后变量x重定义了。

③命名空间的嵌套 
namespace bit
{
	namespace zs
	{
		void Push()
		{
			cout << "zs" << endl;
		}
	}

	namespace ls
	{
		void Push()
		{
			cout << "ls" << endl;
		}
	}
}
int main()
{
	bit::zs::Push();
	bit::ls::Push();
}

(4)命名空间的使用 

① 加命名空间名称及作用域限定符
namespace bit1
{
	int x = 0;
}
int main()
{
	printf("%d\n", bit1::x);
}
②使用using将命名空间中某个成员引入
namespace N
{
	int a = 1;
	int b = 2;
	int Add(int x, int y)
	{
		return x + y;
	}
}

using N::b;
int main()
{
	printf("%d\n", a);//这里报错
	printf("%d\n", N::a);//这里可以使用
	printf("%d\n", b);
	return 0;
}
③ 使用using namespace 命名空间名称 引入
namespace N
{
	int a = 1;
	int b = 2;
	int Add(int x, int y)
	{
		return x + y;
	}
}
using namespace N;
int main()
{
	printf("%d\n", a);
	printf("%d\n", b);
	Add(10, 20);
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2024美赛】F题(中英文):减少非法野生动物贸易Problem F: Reducing Illegal Wildlife Trade

【2024美赛】F题&#xff08;中英文&#xff09;&#xff1a;减少非法野生动物贸易Problem F: Reducing Illegal Wildlife Trade 写在最前面2024美赛翻译 —— 跳转链接 中文赛题问题F&#xff1a;减少非法野生动物贸易你的工作应探讨以下子问题&#xff1a;参考文献词汇表 英文…

zabbix-监控应用程序(Mysql、Nginx)

基础环境&#xff1a;zabbix服务端、两台zabbix被监控端、分别安装Mysql和Nginx环境拓扑图&#xff1a; 实验目标&#xff1a;可以通过zabbix监控到被监控端上安装的mysql与nginx&#xff0c;通过zabbix实时检测mysql和nginx的数据。实验步骤&#xff1a;1.在8.7服务器上安装My…

推荐收藏!算法工程师面试常考的手撕面试题!

今天给大家分享一些算法工程师技术面试中常手撕的代码。 不管是秋招还是社招&#xff0c;互联网大厂的技术面试中的手撕代码这一部分总是绕不过去的一关。 如果你对这些感兴趣&#xff0c;可以文末找我们交流 手撕 numpy写线性回归的随机梯度下降&#xff08;stochastic gra…

实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)

实习管理系统目录 目录 基于SSM的实习管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能介绍 &#xff08;1&#xff09;管理员登录 &#xff08;2&#xff09;实训方向管理 &#xff08;3&#xff09;公告信息管理 &#xff08;4&#xff0…

基于布谷鸟搜索的多目标优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1. 布谷鸟搜索算法基础 2. 多目标优化问题 3. 基于布谷鸟搜索的多目标优化算法 4. 解的存储和选择策略 5.算法步骤 5.完整程序 1.程序功能描述 基于布谷鸟搜索的多目标优化&#xff0c;…

互补滤波算法介绍+SCL源代码(收放卷线速度处理)

工程上对测量信号进行处理,我们可以利用低通滤波器,还可以利用滑动平均值滤波等,关于低通滤波器和滑动平均值滤波器,可以参考专栏相关文章,常用链接如下: 博途PLC一阶滞后低通滤波器(支持采样频率设置) https://rxxw-control.blog.csdn.net/article/details/132972093h…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树

文章目录 第5章 决策树5.1 决策树模型与学习5.1.1 决策树模型5.1.2 决策树与if-then规则5.1.3 决策树与条件概率分布5.1.4 决策树学习5.2 特征选择5.2.1 特征选择问题5.2.2 信息增益5.2.3 信息增益比5.3.1 ID3算法5.3.2 C4.5的生成算法5.4 决策树的剪枝5.5 CART算法5.5.1 CART生…

协作办公开源神器:ONLYOFFICE

目录 前言ONLYOFFICE为什么选择ONLYOFFICE强大的文档编辑功能多种协作方式多人在线协同支持跨端多平台连接器安全性极高本地部署 ONLYOFFICE 8.0版本震撼来袭可填写的 PDF 表单显示协作用户头像更新插件界面设计更快更强大 总结 前言 近几年来&#xff0c;随着互联网技术的不断…

【疑问】为什么声明和定义要分离

前言 我们在学习的时候接触过一个话&#xff1a;编写自定义函数的时候 要做到声明和定义分离 那么为什么呢 今天就来简单的了解一下 疑问&#xff1a;错误的发生 下面给出两个源文件和一个头文件以及报错信息 text.cc文件 #include"head.h"int main() {int a 1…

《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(1)-初识Wireshark

1.简介 前边已经介绍过两款抓包工具&#xff0c;应该是够用了&#xff0c;也能够处理在日常工作中遇到的问题了&#xff0c;但是还是有人留言让宏哥要讲解讲解Wireshark这一款抓包工具&#xff0c;说实话宏哥之前也没有用过这款工具&#xff0c;只能边研究边分享。换句话说就是…

Unity DOTween插件常用方法(二)

文章目录 1.3 动画设置1.4 动画队列 Sequence1.5 动画回调函数1.6 等待函数&#xff08;协程中使用&#xff09; 1.3 动画设置 SetLoops 设置循环动画&#xff1b; 参数&#xff1a; loops&#xff1a;指定循环的次数&#xff0c;设置为 -1 表示无限循环&#xff1b; loopType…

linux -- 并发 -- 并发来源与简单的解决并发的手段

互斥与同步 当多个执行路径并发执行时&#xff0c;确保对共享资源的访问安全是驱动程序员不得不面对的问题 互斥&#xff1a;对资源的排他性访问 同步&#xff1a;对进程执行的先后顺序做出妥善的安排 一些概念&#xff1a; 临界区&#xff1a;对共享的资源进行访问的代码片段…

年轻人“过年”行为大赏

【潮汐商业评论/原创】 前脚刚进家门&#xff0c;后脚快递电话一个接着一个。 临近春节&#xff0c;Julia是提前批回家的年轻人&#xff0c;与Julia一同到家的还有她的年货。上至大小家电&#xff0c;下到坚果零食&#xff0c;短短几天快递就堆满了客厅。 吃的喝的还能理解&…

Tencent Tinker:移动应用热修复的未来之路

Tencent Tinker&#xff1a;移动应用热修复的未来之路 1 引言 移动应用热修复是一项在移动应用开发领域中日益重要的技术&#xff0c;它可以帮助应用程序开发者快速修复线上应用的bug、漏洞和功能问题&#xff0c;而无需重新发布整个应用。这种能力对于提高用户体验、降低用户…

卸载Ubuntu双系统

卸载Ubuntu双系统 我们卸载Ubuntu双系统&#xff0c;可能出于以下原因&#xff1a; 1、Ubuntu系统内核损坏无法正常进入 2、Ubuntu系统分配空间不足&#xff0c;直接扩区较为复杂 3、以后不再使用Ubuntu&#xff0c;清理留出空间 123无论出于哪种原因&#xff0c;我们都是要…

vue项目在public中编写一个json文件 并用http请求获取 模仿数据接口

我们前后端分离是经常存在 前端已经开发到需要接口 但后端还没开始的情况的 如果直接在js中写假数据 后面还要改不少东西 多少有点麻烦 我们可以 直接在 public 静态资源目录下创建一个json文件 这里 我取名叫 city.json 大家可以根据自己喜好给json文件命名 我这个json文件的…

LEETCODE 170. 交易逆序对的总数

class Solution { public:int reversePairs(vector<int>& record) {if(record.size()<1)return 0;//归并 递归int left,right;left0;rightrecord.size()-1;int nummergeSort(left,right,record);return num;}int mergeSort(int left,int right, vector<int>…

WordPress可以做企业官网吗?如何用wordpress建公司网站?

我们在国内看到很多个人博客网站都是使用WordPress搭建&#xff0c;但是企业官网的相对少一些&#xff0c;那么WordPress可以做企业官网吗&#xff1f;如何用wordpress建公司网站呢&#xff1f;下面boke112百科就跟大家简单说一下。 WordPress是一款免费开源的内容管理系统&am…

前端JavaScript篇之对对象与数组的解构的理解、如何提取高度嵌套的对象里的指定属性?

目录 对对象与数组的解构的理解如何提取高度嵌套的对象里的指定属性&#xff1f; 对对象与数组的解构的理解 对象与数组的解构是一种通过模式匹配的方式&#xff0c;从对象或数组中提取值&#xff0c;并将其赋给变量的过程。它可以让我们以一种简洁的方式访问和使用对象或数组…

flask基于大数据的旅游景区推荐可视化大屏系统 juj13-vue

本论文分为六个章节。 第一章&#xff0c;绪论&#xff0c;其包含课题背景及意义&#xff0c;现国内外的发展现状&#xff0c;本课题要研究的内容&#xff0c;所使用开发工具的描述等信息。 第二章&#xff0c;主要介绍了系统的开发技术。 第三章&#xff0c;先讲述功能需求分析…