【C++入门 二 】学习使用C++命名空间及其展开

news2024/11/23 13:41:12

C++入门 二

  • 1. C++第一个小程序
  • 2.命名空间
    • 2.1命名冲突
    • 2.2 命名空间
      • 2.2.1 命名空间定义
      • 2.2.2.命名空间的展开
        • 方式1(直接展开)
        • 方式2(指定展开)
  • 3.C++输入&输出
    • ①输出
    • ②输入

在这里插入图片描述

1. C++第一个小程序

下面这段代码有两个特性

1、io流

2、命名空间

#include <iostream>
using namespace std;

int main()
{
	cout << "hello world" << endl;

	return 0;
}

在这里插入图片描述


2.命名空间

2.1命名冲突

命名冲突产生的原因:
1.我们自己写的和库冲突
2.我们互相之间冲突

在这里插入图片描述
在上面的代码中,我们定义的rand和库里面的rand函数命名冲突了


所以就要学习下面的命名空间了
:: 域作用限定符
在这里插入图片描述


2.2 命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的

2.2.1 命名空间定义

①正常定义和使用命名空间

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

namespace YYQ
{
	int rand = 0;

	int Add(int left, int right)
	{
		return left + right;
	}
	
		struct Node
	{
		struct Node* next;
		int val;
	};

}

int main()
{
	printf("hello world\n");
	printf("%p\n", rand);//默认访问全局的
	printf("%d\n", YYQ::rand); 


	YYQ::Add(1, 2);
	struct YYQ::Node node//结构体这里的指定有些不太一样
	return 0;
}

在这里插入图片描述


②命名空间可以嵌套

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

namespace YYQ
{
	int rand = 0;

	namespace yyq
	{
		int rand = 2;
	}
	int Add(int left, int right)
	{
		return left + right;
	}
		struct Node
	{
		struct Node* next;
		int val;
	};

}

int main()
{
	printf("hello world\n");
	printf("%p\n", rand);//默认访问全局的
	printf("%d\n", YYQ::rand); 
	printf("%d\n", YYQ::yyq::rand);
	YYQ::Add(1, 2);
	return 0;
}

在这里插入图片描述


同一个文件多个位置同名的命名空间或者多个文件中同名的命名空间会被合并为同一个



2.2.2.命名空间的展开

方式1(直接展开)
  using namespace std;
  //直接展开C++ std库 

如果在展开的命名空间和全局中都没找到,就会报错


方式2(指定展开)

我们这里 指定展开 std里面的 coutendl ;

#include <iostream>
using std::cout;
using std::endl;

int main()
{
	//流插入
	std::cout << "hello world\n";
	int a = 10;
	double b = 11.11;
	std::cout << a << "\n";//方式1换行(本质C语言方式)

	std::cout << a << "\n" << b<<"\n";//方式2 

	std::cout << a << std::endl << b << std::endl;//方式3(C++方式)
	std::cout << b;

	return 0;
}


3.C++输入&输出

①输出

#include <iostream>

int main()
{
	//流插入
	std::cout << "hello world";
	int a = 10;
	double b = 11.11;
	std::cout << a;
	std::cout << b;


	return 0;
}

在这里插入图片描述

上面的输出没有换行,下面有几种换行的方式

#include <iostream>

int main()
{
	//流插入
	std::cout << "hello world\n";
	int a = 10;
	double b = 11.11;
	std::cout << a << "\n";//方式1换行(本质C语言方式)

	std::cout << a << "\n" << b<<"\n";//方式2 

	std::cout << a << std::endl << b << std::endl;//方式3(C++方式)
	std::cout << b;

	return 0;
}

②输入

#include <iostream>
using std::cout;
using std::endl;

int main()
{
	//流插入
	std::cout << "hello world\n";
	int a = 10;
	double b = 11.11;
	std::cout << a << "\n";//方式1换行(本质C语言方式)

	std::cout << a << "\n" << b<<"\n";//方式2 

	std::cout << a << std::endl << b << std::endl;//方式3(C++方式)
	
	//cin相当于C语言中的scanf
	std::cin >> a >> b;//指定展开std,找cin
	std::cout << a;
	std::cout << b;

	return 0;
}


在这里插入图片描述
在这里插入图片描述

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

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

相关文章

innovus:如何解决editAddRoute不能在平行线间打孔的问题

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 用户使用editAddRoute命令或者图形界面手动拉线,默认只能在相同net 的不同层net shape crossover(交叉)位置上打孔,如图右侧GNDD交叉的位置有打孔,而左侧平行的两条net shape无法自动打孔。 有…

众和策略:鸿蒙4升级设备数量破亿;财政部调整保险公司考核方式

重要的消息有哪些 财政部调整保险公司查核办法 增强险资入市积极性 财政部10月30日消息显现&#xff0c;近日已印发《关于引导保险资金长时间稳健投资、调整国有商业保险公司绩效评价相关指标的告诉》&#xff08;下称《告诉》&#xff09;&#xff0c;清晰将国有商业保险公司…

​CRM中的大客户销售是什么?​

对企业来说&#xff0c;大客户可能贡献了大部分的销售业绩。什么样的客户可以被认定为是大客户&#xff1f;大客户销售与普通销售有何区别&#xff1f;针对大客户又该采取什么样的销售策略呢&#xff1f;从回答这几个问题开始&#xff0c;我们来说说CRM中的大客户销售是什么&am…

数智领航未来∣2023契约锁企企通专题沙龙:数字建设,为企业高质量发展注入新动能

今年两会期间&#xff0c;“数字经济”是当之无愧的热词之一。中央经济工作会议提出&#xff0c;要大力发展数字经济&#xff0c;提升常态化监管水平&#xff0c;支持平台经济发展。 当前数据作为新型生产要素&#xff0c;价值尚未得到充分释放&#xff0c;需要疏通数据要素流通…

Microsoft 365 管理自动化

Microsoft 365 服务被大多数组织广泛使用&#xff0c;每天生成的数据量巨大。解决 Microsoft 365 中的问题可能非常困难&#xff0c;并且使用多个管理中心来保护组织变得复杂。本机控制台还缺少某些批量管理任务、全面的审计报告和基于角色的精细访问控制。 Microsoft 360 管理…

2、NLP文本预处理技术:词干提取和词形还原

一、说明 在上一篇文章中&#xff0c;我们解释了文本预处理的重要性&#xff0c;并解释了一些文本预处理技术。在本文中&#xff0c;我们将介绍词干提取和词形还原主题。 词干提取和词形还原是两种文本预处理技术&#xff0c;用于将单词还原为其基本形式或词根形式。这些技术的…

OpenGL ES相关库加载3D 车辆模型

需求类似奇瑞的这个效果&#xff0c;就是能全方位旋转拖拽看车&#xff0c;以及点击开关车门车窗后备箱等 瑞虎9全景看车 (chery.cn) 最开始收到这个需求的时候还有点无所适从&#xff0c;因为以前没有做过类似的效果&#xff0c;后面一经搜索后发现实现的方式五花八门&#xf…

十月听书笔记

十月听书笔记 1、《宝贵的人生建议》2、《后工作时代》3、《我们何以不同》4、《恰到好处的帮助》5、《24个比利》6、《恰到好处的安慰》7、《为什么越无知的人越自信》8、《陌生人效应》9、《往里走&#xff0c;安顿自己》10、《为什么学生不喜欢上学》11、《自律力》12、《弹…

浅析Redis大Key | 京东云技术团队

一、背景 在京东到家购物车系统中&#xff0c;用户基于门店能够对商品进行加车操作。用户与门店商品使用Redis的Hash类型存储&#xff0c;如下代码块所示。不知细心的你有没有发现&#xff0c;如果单门店加车商品过多&#xff0c;或者门店过多时&#xff0c;此Key就会越来越大…

Qt之基于QCustomPlot绘制直方图(Histogram),叠加正态分布曲线

一.效果 二.原理 1.正态分布 高斯分布(Gaussian distribution),又名正态分布(Normal distribution),也称"常态分布",也就是说,在正常的状态下,一般的事物,都会符合这样的分布规律。 比如人的身高为一个随机变量,特别高的人比较少,特别矮的也很少,大部分都…

轻量封装WebGPU渲染系统示例<9>- 基本光照(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/SimpleLightTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. 用户操…

初始SpringSecurity

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

【JavaSE专栏55】Java集合类HashTable解析

&#x1f332;Java集合类HashTable解析 &#x1f332;Java集合类HashTable解析摘要引言Hashtable是什么&#xff1f;Hashtable vs. HashMap&#xff1a;何时使用Hashtable&#xff1f;多线程环境&#xff1a;历史遗留系统&#xff1a;不需要进行特殊操作&#xff1a; Hashtable…

Mysql系列 -索引数据结构

索引就是排好序的数据结构&#xff0c;可以帮助我们快速的查找到数据&#xff0c;那么底层的数据到底是如何存储的呢&#xff1f; 为什么InnoDB 用的是Btree 存储结构&#xff1f; 大家可以看看这个可视化的网站 数据结构和算法的可视化工具 可以看到数据结构里面有链表&…

@ModelAttribute注解之如何使用postman传递参数

代码实例&#xff1a; GetMapping("/selectOpenList")ApiOperation(value "公开问卷列表")AnonymityAnnotation(access true)public WebResponse<PageInfo<QuestionnaireVo>> selectOpenList(ModelAttribute QuestionnaireDto dto){xxxxxxxx…

如何在3dMax中创建具有自定义图标和MaxScript的自定义按钮?

如何在3dMax中创建自定义按钮? 在本教程中,将向您展示如何创建具有自定义图标组和MaxScript的自定义按钮。 在3dMax中,主工具栏上有许多按钮。许多3dMax用户会问:是否可以制作一个带有自定义图像图标的自定义按钮,该按钮后面有自定义MaxScript代码来实现一定的功能?那么…

rust代码学习笔记(未完待续10/31)

文章目录 一、案例一&#xff1a;读取输入打印出来二、案例二&#xff1a;&#xff08;引入新包&#xff09;猜数字游戏三、案例三&#xff1a;循环猜测数字四、案例四&#xff1a;猜字游戏&#xff08;彩色版本&#xff09;五、rust一些注意事项1&#xff09;声明变量默认是不…

C# 如何反射获取常量值

首先&#xff0c;常量是一个字段&#xff0c;所以需要从字段中获取该值。 但是需要传入的BindingFlags是什么&#xff0c;与其盲猜&#xff0c;不如直接反射所有字段值&#xff0c;查看其中的常量有哪些特性和bool值来判断。 ...static void Main(string[] args){var type typ…

禁止使用Lombok,在Lombok的加持下,“小狗”.equals(“老狗”) = true

目录 一、禁止使用Lombok1、jdk版本问题2、被迫营业3、可读性差 二、Lombok中的真实小坑三、看看编译后的代码&#xff0c;到底怎么回事1、编译class2、添加一个注解EqualsAndHashCode(callSuper true) 大家好&#xff0c;我是哪吒。 一、禁止使用Lombok 我有一个同学&#…

VASSAL 3.7.4 发布,开源棋牌游戏构建引擎

导读VASSAL Engine 3.7.4 版本现已发布。VASSAL 是一个游戏引擎&#xff0c;用于在线构建棋盘游戏和纸牌游戏&#xff0c;构建的游戏可在 Internet 上或通过电子邮件实时运行。 VASSAL Engine 可在所有平台上运行&#xff0c;是免费的开源软件。具体更新内容包括&#xff1a; …