【C++】关键字、命名空间、输入和输出、缺省参数的深入了解

news2024/11/26 12:41:11

目录

  • 一、C++关键字
  • 二、命名空间
    • 2.1 为什么存在命名空间?
    • 2.2 命名空间定义
    • 2.3 命名空间使用
  • 三、C++输入&输出
  • 四、缺省函数
    • 4.1 缺省函数分类
  • 总结

一、C++关键字

C++一共有63个关键字

在这里插入图片描述

其中红色圈出来的32个关键字同时也是C语言的
在这里插入图片描述


二、命名空间

2.1 为什么存在命名空间?

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

2.2 命名空间定义

定义命名空间,namespace + 命名空间名字{ },{ }中即为命名空间的成员

命名空间定义注意事项

  • 可以嵌套定义
  • 命名空间的名字可以有多个相同名称,最后编译器会合并成一个命名空间中
  • 一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中
// 1. 普通的命名空间
namespace N1
{
	int a;				     // 定义变量
	int Add(int x, int y)	 // 定义函数
	{
		return x + y;
	}
}

// 2. 命名空间嵌套定义
namespace N2
{
	int a, b;
	int Add(int x, int y)
	{
		return x + y;
	}
	
	// 嵌套定义N3,同时在N3里面又定义函数
	namespace N3
	{
		int c, d;
		int Sub(int c, int d)
		{
			return c - d;
		}
	}
}

// 3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
namespace N3
{
	int Mul(int x, int y)
	{
		return x * y;
	}
}

2.3 命名空间使用

主函数里直接使用命名空间的成员是找不到的,我们需要引入该命名空间
在这里插入图片描述

命名空间的引入有三种方式:

  • 加命名空间名称及作用域限定符::双冒号为作用域限定符
int main()
{
	printf("%d\n", N::a);
	return 0; 
}
  • 使用using将命名空间中成员引入
using N::b;
int main()
{
	printf("%d\n", N::a);	// 未被引入的成员还是不能直接使用
	printf("%d\n", b);
	return 0;
}
  • 使用using namespace 命名空间名称引入
using namespce N;
int main()
{
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

三、C++输入&输出

C++有独特输出和输入对象,分别是cout标准输出cin标准输入
但是必须要包含<iostream>头文件std标准命名空间
iostream:输入输出流头文件
std:C++标准库的命名空间,C++所有标识符都被定义于std命名空间中,也就是说你要使用C++标准库的对象都需要使用该命名空间

在这里插入图片描述
这里<<>>并不是左右移运算符,而是重载后,变成流操作符


我们来梳理下:cout和cin跟iostream,std的关系是:

cout和cin是在iostream头文件里,但是c++的所有标识符都定义在std命名空间里,所以我们需要引入std命名空间。

注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可。后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h
旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用<iostream>头文件 + std命名空间的方式。

C++的标准输出和输入也更加方便实用,不需要增加数据格式控制(自动识别类型),如:C语言整形——输入和输出都要%d,但是也造成输出保留几位小数.%4f和格式化输出%-3d等格式的不方便,所以需要格式化输出还是建议用C语言的printf函数,在C++里需要引用<cstdio>头文件

在这里插入图片描述


四、缺省函数

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。

void TestFunc(int a = 0)
{
	cout << a << endl;
}

int main()
{
	TestFunc();		// 没有传参时,使用参数的默认值
	TestFunc(10);	// 传参时,使用指定的实参
}

在这里插入图片描述


4.1 缺省函数分类

  • 全缺省函数
void Func(int a = 10, int b = 20, int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
  • 半缺省函数
void Func(int a, int b = 10, int c = 20)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}

缺省参数注意:

  1. 半缺省参数必须从右往左依次来给默认值,中间不能间隔给
  2. 缺省函数传参数,必须要从左往右依次传
  3. 缺省参数不能在函数声明和定义中同时出现,缺省值相同也不行,如下图
  4. 缺省值必须是常量或者全局变量
  5. C语言不支持缺省参数(编译器不支持)

在这里插入图片描述

总结

本篇文章说明了C++的关键字,命名空间的定义、三种引入方式,标准输入和标准输出和头文件,std命名空间的关系,缺省函数的使用方法和注意事项。

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

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

相关文章

超简单访问群晖NAS的方法,安装一个SPK套件即可

目录 准备工作 下载与安装神卓NAS公网助手 使用神卓NAS公网助手实现远程访问 我们都知道群晖&#xff2e;&#xff21;&#xff33;放在家里&#xff0c;人在外面的话是无法访问的&#xff0c;因为有家庭NAT的限制&#xff0c;但是使用的NAS的场景比较多&#xff0c;在外面又…

PyTorch----模型运维与实战

一、PyTorch是什么 PyTorch 由Facebook开源的神经网络框架&#xff0c;专门针对 GPU 加速的深度神经网络&#xff08;DNN&#xff09;编程。 二、PyTorch安装 首先确保你已经安装了GPU环境&#xff0c;即Anaconda、CUDA和CUDNN 随后进入Pytorch官网​​​​​​PyTorch 官…

【C++】深度解析C++的四种强制转换类型(小白一看就懂!!)

目录 一、前言 二、C风格的强制类型转换 &#x1f95d;隐式类型转换 &#x1f349;显示类型转换 三、为什么C需要四种类型转换 四、C强制类型转换 &#x1f353; 静态转换&#xff08;static_cast&#xff09; ✨用法 ✔️语法 &#x1f331;例子 &#x1f34…

oracle数据库安装和配置:详细教程

安装和配置Oracle数据库是一个较为复杂的过程&#xff0c;需要按照一定的步骤来操作。以下是基于Oracle Database 19c的安装和配置教程&#xff0c;适用于Windows环境。请根据你的具体环境和版本进行适当的调整。 1. 下载Oracle数据库软件 访问Oracle官方网站下载Oracle Data…

2.C++入门2(函数重载与引用)

⭐本章主要介绍c中的函数重载&#xff0c;重载的原理&#xff0c;和引用&#xff08;参数引用&#xff0c;返回值引用&#xff09; ⭐本人c代码的Gitee仓库&#xff1a;c学习 橘子真甜/yzc的c学习 - 码云 - 开源中国 (gitee.com) 一.函数重载 1.1 什么是函数重载 函数重载是函…

使用OpenCore Auxiliary Tools(OCAT)为黑苹果生成三码

文章目录 基础知识apple三码常用工具OCAT 操作方法配置正确的open core版本一键生成 验证 基础知识 apple三码 苹果的生态是一套完整的闭环&#xff0c;每一个苹果硬件产品都有独一无二的 SMBIOS ID&#xff08;机型 ID&#xff09;&#xff0c;机型 ID 决定序列号、主板序列号…

遥感技术在生态系统碳储量、碳收支、碳排放、碳循环以及人为源排放反演等领域的技术发展,实践角度解决遥感技术在生态、能源、大气等领域的碳排放监测及模拟问题

卫星遥感具有客观、连续、稳定、大范围、重复观测的优点&#xff0c;已成为监测全球碳盘查不可或缺的技术手段&#xff0c;卫星遥感也正在成为新一代 、国际认可的全球碳核查方法。本教程的目的就是梳理碳中和与碳达峰对卫星遥感的现实需求&#xff0c;系统总结遥感技术在生态系…

I 农产品如何实现全链路追踪?区块链、非中心化数据库的应用

大家好啊&#xff0c;我是豆小匠。 本期作为区块链技术分享的第一期&#xff0c;和大家分享下区块链在现实生活中的应用。 区块链的场景 说起区块链&#xff0c;大家可能比较陌生&#xff0c;但是说比特币估计都有耳闻。 但是作为一项技术&#xff0c;区块链的应用远不止于此…

mysql Field ‘ssl_cipher‘ doesn‘t have a default value的解决

1、执行sql的时候报错&#xff1a; 16:48:00 INSERT INTO mysql.user (Host,User,authentication_string) VALUES(%,root, PASSWORD(12323)) Error Code: 1364. Field ssl_cipher doesnt have a default value 0.000 sec 1、解决&#xff0c;执行命令&#xff1a; my…

Linux 操作系统 进程(2)

上篇文章我们说过的操作系统进程的概念等&#xff08;Linux 操作系统 进程&#xff08;1&#xff09;-CSDN博客&#xff09;&#xff0c;这篇我们就来了解进程最重要最直观的两个状态 &#xff1a; 进程状态 进程优先级 进程状态 kill命令 我们在查询进程的时候就可以看到当前…

港股通“大洗牌”,这是一场“双赢”还是一次“交易”?

最近的资本市场&#xff0c;可谓是“一石激起千层浪”。先有阿里完成香港双重主要上市&#xff0c;随后港股通进行“大洗牌”。 9月9日&#xff0c;上交所、深交所发布公告&#xff0c;阿里巴巴-W&#xff08;09988.HK&#xff09;、茶百道(02555.HK)、云音乐(09899.HK)、顺丰…

YB5090是一款 5V USB 输入,支持双节串联锂电池或锂离子电池的升压充电管理 IC

适用于TYPE-C接口,集成30V OVP功能 , 最大1.8A充电电流,带NTC及使能功能,双节锂电升压充电芯片 概述&#xff1a; 是一款 5V USB 输入&#xff0c;支持双节串联锂电池或锂离子电池的升压充电管理 IC。集成有 NTC 功能&#xff0c;其最大的充电电流可达 1.8A。 集成功率MOS,采用…

架构师备考的一些思考(二)

前言 以我的视野来看&#xff0c;部长或技术总监这种岗位还是比较难竞争的&#xff0c;换言之&#xff0c;程序员的上升空间比较窄&#xff0c;如果想要拿到高级岗位&#xff0c;最好的是工作三五年后就转项目经理&#xff0c;然后再往上爬。 架构师倒是也能晋升高级岗位&#…

git的快速合并fast-forward merge详解

文章目录 1. 什么是快进合并&#xff1f;2. 快进合并的前提条件3. 快进合并的工作原理3.1 示例场景&#xff1a;3.2 使用命令&#xff1a;3.3 快进合并的视觉效果&#xff1a; 4. 快进合并的优点5. 快进合并的缺点6. 快进合并 vs 非快进合并6.1 非快进合并&#xff1a;6.2 非快…

Promise详解、自定义

这里写目录标题 一、.Promise对象详解1. Promise是什么2. Promise的优点3. 异步编程4. then(onFulfilled, onRejected)&#xff1a;5. util.promisify 方法&#xff1a;6. promise的状态改变7.Promise 对象的值8. Promise的基本执行流程9. Promise的API10. Promise中的关键问题…

怎样训练一个自己的大语言模型?这可能是全网最简单易懂的教程!

Llama 2 是来自 Meta 的第二代开源LLM的集合&#xff0c;旨在处理各种自然语言处理任务&#xff0c;模型的规模从 7B&#xff08;70亿&#xff09;到 70B&#xff08;700亿&#xff09;个参数不等&#xff0c;可以商用。 Llama-2-Chat 针对对话进行了优化&#xff0c;显示出与…

你们准备好了吗?Python 入行 AI 的基础技术栈及学习路线

人工智能&#xff08;AI&#xff09;是当今技术发展的重要领域之一&#xff0c;而 Python 已成为 AI 领域的首选编程语言之一。Python 简单易学&#xff0c;具有丰富的生态系统和社区支持&#xff0c;特别是在 AI 和机器学习&#xff08;ML&#xff09;领域有大量强大的库和框架…

电商系统源码开发中的卷轴模式系统:当前技术面临的问题

随着互联网技术的飞速发展&#xff0c;电商系统已成为数字经济的重要组成部分。为了提升用户体验和平台活跃度&#xff0c;卷轴模式作为一种创新的用户参与机制&#xff0c;逐渐在电商系统中崭露头角。然而&#xff0c;在电商系统源码开发卷轴模式系统的过程中&#xff0c;仍面…

‌汽车的舒适进入功能是什么意思?

移动管家汽车的舒适进入系统是指无钥匙进入功能&#xff0c;它允许驾驶者在距离车辆一定范围内自动感应解锁车辆&#xff0c;并具备无钥匙启动功能‌。舒适进入系统的核心优势包括&#xff1a; ‌智能化操作‌&#xff1a;无需传统钥匙&#xff0c;通过智能感应实现车门解锁和…

@Transactional和@Synchronized的冲突

Transactional和Synchronized的冲突 场景 方法是先进行检查&#xff0c;然后新增&#xff0c;添加了事务注解&#xff0c;为了保证检查&#xff08;要求业务上唯一&#xff09;&#xff0c;添加了Synchronized注解 想法很简单&#xff0c;事务注解保证方法原子性&#xff0c…