C++关键字、命名空间、输入输出

news2024/11/23 20:18:04

一、C++

        C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。

二、C++关键字

        C++关键字有些是C语言中原带的,也有一些是C++本身的关键字,对于这些关键字,大家只需在学习过程中去理解、接受即可。

三、命名空间

3.1命名空间的介绍

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

        在命名空间中定义的变量和函数等,不与主函数或其他地方的定义冲突,也就是说命名空间是程序员单独开辟出的一块“与世隔绝”的空间,在不对命名空间进行展开或者引用时,里面的数据不会被调用和冲突。

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

代码演示如下:

namespace jgk
{
	int n = 1;
	int m = 10;
	int ADD(int x, int y)
	{
		return x + y;
	}
}

        对于如上的代码,“jgk”是指命名空间的名字,一般开发中是用项目名字做命名空间名,平时练习时也可以用自己名字的缩写,没有硬性要求。

        命名空间中可以定义变量/函数/类型。

        命名空间可以进行嵌套使用,如下所示:

namespace jgk
{
	int n = 1;
	int m = 10;
	int ADD(int x, int y)
	{
		return x + y;
	}
	namespace lx
	{
		int SUB(int x, int y)
		{
			return x - y;
		}
	}
}

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

3.2命名空间的使用

        我们知道何为命名空间后,那么该如何使用呢?

namespace jgk
{
	int n = 1;
	int m = 10;
	int ADD(int x, int y)
	{
		return x + y;
	}
}

        对于如上的命名空间,我们想要使用空间里面的定义,就需要对命名空间进行展开或者进行引用。

3.2.1展开命名空间
using namespace jgk;

        使用using namespace 命名空间名称引入,将命名空间展开后,在全局中就可以随意使用,但是此类做法较为危险,如果在主函数和命名空间中同时具有相同的变量或函数等,就会分辨不清该使用哪个。

3.2.2加命名空间名称及作用域限定符
namespace jgk
{
	int n = 1;
	int m = 10;
	int ADD(int x, int y)
	{
		return x + y;
	}
	namespace lx
	{
		int SUB(int x, int y)
		{
			return x - y;
		}
	}
}
int main()
{
	int m = 5;
	printf("%d\n", m);
	printf("%d\n", jgk::n);
	return 0;
}

        在没有加命名空间名称及作用域限定符时,调用的是main函数内部的变量,在加命名空间名称(jgk)及作用域限定符(::)后,调用的是命名空间中的变量。

3.2.3使用using将命名空间中某个成员引入
namespace jgk
{
	int n = 1;
	int m = 10;
	int ADD(int x, int y)
	{
		return x + y;
	}
	namespace lx
	{
		int SUB(int x, int y)
		{
			return x - y;
		}
	}
}
using jgk::m;
int main()
{
	printf("%d\n", m);
	printf("%d\n", jgk::n);
	return 0;
}

四、命名空间的总结

1、程序员独立开辟出来的“空间”,可以避免与全局变量发生冲突。

2、命名空间的起名是任意的,在做项目时,多以项目名字命名,命名不具有硬性要求。

3、命名空间的使用:

        (1)使用using namespace 命名空间名称引入.

        (2)加命名空间名称及作用域限定符。

        (3)使用using将命名空间中某个成员引入。

五、C++输入&输出

        还记得我们初入C语言时所写的“hello world”代码吗?相信那是许多小伙伴们梦想开始的地方,但是在C++中,也有自己的“hello world”,那么该如何输出呢?

说明:

1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件
以及按命名空间使用方法使用std。
2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< 
iostream >头文件中。
3. <<是流插入运算符,>>是流提取运算符。
4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。
C++的输入输出可以自动识别变量类型。
5. 实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识。

5.1C++输出
int main()
{
	printf("hello world\n");//C



	std::cout << "hello world" << std::endl;//C++
	return 0;
}

        由上图可知,C++的输入为“cout”,为标准输出对象,endl表示换行输出。

        “cout”、“cin”、“endl”都属于< iostream >头文件,在使用它们时,需要按照命名空间的使用方法。

        C++中的输入和输出,不必像C语言中那样辨别变量的类型,可以自动识别。

int main()
{
	int a = 1;
	float b = 3.2f;
	double c = 3.14;
	long  d = 1000000;
	std::cout << "a = " << a << std::endl;
	std::cout << "b = " << b << std::endl;
	std::cout << "c = " << c << std::endl;
	std::cout << "d = " << d << std::endl;
	return 0;
}

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

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

相关文章

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷1(私有云)

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…

C++之泛型编程---有限双端队列结构容器

引言 为了解决工业领域代码容器的通用化&#xff0c;可以考虑C里的泛型编程概念。假设一个场景需要实时保存最近的n个数据并按照顺序依次处理时&#xff0c;就需要定义一种新的容器来满足要求。当容器不满时&#xff0c;添加数据直接到队尾&#xff0c;当容器数据已经为n个时&a…

onlyoffice容器打包成镜像

书接上篇&#xff0c;onlyoffice容器已经更改在本地docker环境中了&#xff0c;之后需要部署到测试环境的docker中&#xff0c;采用容器打包成本地镜像 1、本地docker 查看容器&#xff1a;docker ps 生成镜像&#xff1a;docker commit -p blissful_lichterman 重命名镜像&a…

博睿数据将出席ClickHouse Hangzhou User Group第1届 Meetup

2024年5月18日&#xff0c;博睿数据数智能力中心负责人李骅宸将受邀参加ClickHouse Hangzhou User Group第1届 Meetup活动&#xff0c;分享《ClickHouse在可观测性的应用实践和优化》的主题演讲。 在当前数字化浪潮下&#xff0c;数据的规模和复杂性不断攀升&#xff0c;如何高…

Sam Altman 在斯坦福大学演讲的 10 个要点

最近在斯坦福大学举行的问答环节中&#xff0c;OpenAI 富有远见的首席执行官 Sam Altman 分享了关于人工智能的未来及其对社会的潜在影响的宝贵见解。作为 GPT 和 DALL-E 等突破性人工智能模型背后的研究组织的联合创始人&#xff0c;Altman 的观点对于企业家、研究人员以及任何…

uniapp+vue基于移动端的药品进销存系统r275i

最后我们通过需求分析、测试调整&#xff0c;与药品进销存管理系统管理系统的实际需求相结合&#xff0c;设计实现了药品进销存管理系统管理系统。 系统功能需求包含业务需求、功能需求用户需求&#xff0c;系统功能需求分析是在了解用户习惯、开发人员技术和实力等各个因素的前…

蓝鹏在线测宽仪有多少个常用系列?

蓝鹏测控专注几何尺寸智能测量仪的生产&#xff0c;其产品线丰富多样&#xff0c;测量仪涵盖了外径、椭圆度、螺纹钢肋高、直线度、宽度、厚度、边长、长度等各类几何尺寸&#xff0c;在线测宽仪主要应用于板材类产品的宽度尺寸检测。 在线测宽仪硬件技术与软件技术相结合&am…

第1章. STM32单片机入门知识介绍

目录 0. 《STM32单片机自学教程》专栏 1.1 嵌入式系统简介 1.1.1 什么是嵌入式系统 1.1.2 嵌入式系统的特点 1.1.3 嵌入式系统的应用领域 1.2 单片机基本概念 1.3 ARM简介 1.3.1 ARM公司简介 1.3.2 ARM处理器简介 1.4 STM32简介 1.4.1 基于Cortex内核的MCU 1.4.…

解析直播美颜SDK:计算机视觉在实时视频中的应用

今天&#xff0c;小编将带大家深入探讨直播美颜SDK的原理、应用及其在实时视频中的重要性。 一、直播美颜SDK的原理 直播美颜SDK的核心原理是基于计算机视觉技术&#xff0c;通过识别人脸、肤色、眼睛、嘴巴等关键特征点&#xff0c;对视频图像进行实时处理。其主要包括以下几…

【FFmpeg】Filter 过滤器 ① ( FFmpeg 过滤器简介 | 过滤器概念 | 过滤器用法 | 过滤器工作流程 | 过滤器文档 | 过滤器分类 )

文章目录 一、FFmpeg 过滤器 Filter 简介1、FFmpeg 过滤器概念2、FFmpeg 过滤器用法3、FFmpeg 过滤器工作流程4、FFmpeg 过滤器文档 二、FFmpeg 过滤器 分类1、过滤器分类 - 根据处理数据类型分类2、过滤器分类 - 根据编码器位置分类3、过滤器分类 - 根据功能分类 FFmpeg 相关文…

常见C语言基础笔试题

一. 简介 整理一些C语言常见的基础笔试题。 二. 常见C语言基础笔试题 1. 结构体指针加 1 结构体指针加 1操作&#xff1a; #include <stdio.h> #include <stdlib.h>typedef struct tagDev_INFO_S{int a;int b;int c;int d; } DEV_INFO_S;int main(void) { D…

力扣-21. 合并两个有序链表-js实现

/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} list1* param {ListNode} list2* return {ListNode}*/ const mergeTwoList…

LeetCode 面试题 17.14 —— 最小 k 个数

阅读目录 1. 题目2. 解题思路一3. 代码实现一4. 解题思路二5. 代码实现二 1. 题目 2. 解题思路一 第一种方法就是利用快速排序&#xff0c;第一次排序后&#xff0c;数组被划分为了左右两个区间 [ 0 , i ] , [ i 1 , a r r . s i z e ( ) − 1 ] [0, i], [i1, arr.size()-1]…

【vue+vue-treeselect】根据指定字段,如isLeaf(是否末级节点),设置只允许末级节点可以选

1、当项目有特殊要求&#xff0c;必须根据某个字段的值去判断&#xff0c;是否节点可以选&#xff0c;即使已经是末级节点了&#xff0c;还是需要根据字段判断是否禁用 &#xff08;1&#xff09; :flat"true"一定要设置 (2)获取数据源的时候&#xff0c;设置下禁用…

制造业为什么需要质量管理系统

质量管理是一个企业最重要的核心竞争力之一。为了确保产品和服务的高质量&#xff0c;企业需要建立一个完善的质量管理体系。而质量管理系统&#xff08;QMS&#xff09;正是指导企业如何规范、组织和管理质量相关活动的框架和流程。 在智能制造时代&#xff0c;广大企业如何结…

数组中两个字符串的最小距离

给定一个字符串数组strs&#xff0c;再给定两个字符串str1和str2&#xff0c;返回在strs中str1和str2的最小距离&#xff0c;如果str1或str2为null&#xff0c;或不在strs中&#xff0c;返回-1。 输入描述&#xff1a; 输入包含有多行&#xff0c;第一输入一个整数n(1 ≤ n ≤…

苹果平板HOME键成历史,全面屏时代到来?2024平板电脑市场趋势分析

近期苹果公司在“放飞吧”发布会上推出了新款iPad Pro和iPad Air平板电脑&#xff0c;并下架了最后一款带有实体Home按键的iPad 9。这一变化标志着Home键在苹果iPad产品线中成为了历史&#xff0c;引起了不少网友的怀念和感慨。 与此同时&#xff0c;今年3月线上平板电脑市场迎…

js api part6

正则表达式 正则表达式 &#xff08;Regular Expression&#xff09;是用于 匹配字符串中字符组合 的模式。在 JavaScript中&#xff0c;正则表达式也是对象。通常用来查找、替换那些符合正则表达式的文本&#xff0c;许多语言都支持正则表达式。 正则表达式在 JavaScript中的…

猫不爱喝水是正常的?求求別再被洗脑了!日常可以补水的主食分享

猫不爱喝水正常吗&#xff1f;看给猫喂的什么&#xff0c;喂的罐头的话不爱喝水问题不大。喂的干粮猫还长期不喝水&#xff0c;处于缺水状态&#xff0c;可能会出现便秘、上火、尿黄、尿少等症状。在高温的夏季&#xff0c;猫还可能因脱水而中暑&#xff0c;严重时甚至可能导致…

上传文件客户端签名直传

上传文件的客户端签名直传是一种常用的将文件直接上传到云存储服务如Amazon S3、阿里云OSS等云服务上的技术手段。这种方法通常用于减轻服务器负担&#xff0c;并提高上传效率。 以下是实现客户端签名直传的基本步骤&#xff1a; 1. 客户端请求上传权限 客户端&#xff08;如…