初阶C++(二)

news2024/9/23 21:29:31

初阶C++(二)

  • 1. 重载函数
    • (一)对于重载函数的理解
    • (二)重载函数分类
    • 2.引用
    • (一) 引⽤的概念和定义
    • (二)引用的使用
    • (三)const引用

1. 重载函数

(一)对于重载函数的理解

C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者
类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同
名函数的。

(二)重载函数分类

其中分为多种, 其一则是:

//1:参数类型不同
int Add(int x, int y)
{
	cout << "int Add(int x, int y)" << endl;
	return x + y;
}

double Add(double left, double right)
{
	cout << "double Add(double left,double right)" << endl;
	return left + right;
}

第二种则是:

//2:参数个数不同
int Add(int x, int y)
{
	cout << "int Add(int x,int y)" << endl;
}

int Add(int x)
{
	cout << "int Add(int x)";
}

然后再是:

//3:参数顺序不同
int cwz(char x, int y)
{
	cout << "int cwz(char x,int y)" << endl;
}

int cwz(int x, char y)
{
	cout << "int cwz(int x,char y)" << endl;
}

但是有一种情况是不算做重载函数:
返回类型的不同
在这里插入图片描述

2.引用

(一) 引⽤的概念和定义

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,
它和它引⽤的变量共⽤同⼀块内存空间。如:周树人被称作为“”鲁迅“、孙悟空被称作为“斗战神佛”…
C++中为了避免引⼊太多的运算符,会复⽤C语⾔的⼀些符号,⽐如前⾯的<< 和 >>,这⾥引⽤也和取
地址使⽤了同⼀个符号&,⼤家注意使⽤⽅法⻆度区分就可以

在这里插入图片描述
在这里插入图片描述
接下来就是对引用的定义-------

#include<iostream>
using namespace std;
int main()
{
//用b、c、d来引用a
	int a = 0;
	int& b = a;
	int& c = a;
	int& d = a;
	d++;
 
 //打印地址
	cout << &a << endl;
	cout << &b << endl;
	cout << &c << endl;
	cout << &d << endl;
}

我们来逐步分析--------
第一步调试:
在这里插入图片描述
在这里插入图片描述
如图所示:b、c、d成功的引用了a,当d++的时候a、b、c、d都会改变,因为他们都是表示a这个变量
在这里插入图片描述
最后打印他们的地址得出是一样的
在这里插入图片描述
##(二) 引用特性

• 引⽤在定义时必须初始化
• ⼀个变量可以有多个引⽤
• 引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体
在这里插入图片描述
在这里插入图片描述

(二)引用的使用

对于引用的简单运用:
• 引⽤在实践中主要是于引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时变被引⽤对象。
• 引⽤传参跟指针传参功能是类似的,引⽤传参相对更⽅便⼀些。

比如实现一个交换函数:

#include<iostream>
using namespace std;
void swap(int& x, int& y)//在这里采用引用
{
	int tmp = x;
	x = y;
	y = tmp;
}

int main()
{
	int a = 10;
	int b = 20;
	swap(a, b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	return 0;
}

在这里插入图片描述

(三)const引用

对于const引用了解-----------

• 可以引⽤⼀个const对象,但是必须⽤const引⽤。const引⽤也可以引⽤普通对象,因为对象的访
问权限在引⽤过程中可以缩⼩,但是不能放⼤。
• 不需要注意的是类似 int& rb = a3; double d = 12.34; int& rd = d; 这样⼀些场
景下a
3的和结果保存在⼀个临时对象中, int& rd = d 也是类似,在类型转换中会产⽣临时对
象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性,所以这⾥
就触发了权限放⼤,必须要⽤常引⽤才可以。
• 所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象,
C++中把这个未命名对象叫做临时对象。

例如:
在const修饰下a,却想要用引用来是的a的值改变
(权限放大)<这是不能的>

int main()
{
	const int a = 10;
	int& x = a;//这很显然是错的《放大了a的权限》
	const int& x = a;//必须这样才行
}

权限缩小<这是可以的>

int main()
{
    int a = 10;
	const int& x = a;缩小了a的权限
}

转换成别的类型的数也要用const来修饰

#include<iostream>
using namespace std;
int main()
{
int a = 10;
const int& ra = 30;
// 编译报错: “初始化”: ⽆法从“int”转换为“int &”
// int& rb = a * 3;
const int& rb = a*3;//这里是临时变量,临时变量具有常数性,那么就要用const来修饰
double d = 12.34;
// 编译报错:“初始化”: ⽆法从“double”转换为“int &”
// int& rd = d;
const int& rd = d;
return 0;
}

初阶C++(二)到此结束,感谢大家观看! ! !

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

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

相关文章

EI期刊目录为何还没更新?预警、On Hold、镇压多重bug,神仙难救Top能逃此劫吗?

本周投稿推荐 SCI • 能源科学类&#xff0c;1.5-2.0&#xff08;25天来稿即录&#xff09; • CCF推荐&#xff0c;4.5-5.0&#xff08;2天见刊&#xff09; • 生物医学制药类&#xff08;2天逢投必中&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09…

*AI大模型热潮下的冷静思考:谁在守护模型安全?

随着2023年4月的到来&#xff0c;AI大模型领域仿佛迎来了春天&#xff0c;各类产品如雨后春笋般涌现&#xff0c;成为科技界乃至社会各界的热议焦点。从阿里巴巴的“通义千问”到华为的“盘古大模型”&#xff0c;再到商汤科技的“商量SenseChat”&#xff0c;以及即将亮相的“…

一文清晰了解CSS

一、基本概念 1.定义 CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式表&#xff09;&#xff0c;前面说了CSS是一种用于描述网页内容外观和样式的标记语言。 具体地&#xff0c;它通过选择器将样式规则应用到HTML元素上&#xff0c;控制网页的布局、颜色、字体等…

linux中top、htop监控工具命令详解

文章目录 top 命令概述如何使用 top 命令top 命令输出解释各部分解释系统信息任务信息CPU 使用信息内存使用信息进程信息 top 命令的常用交互操作top 命令的常用选项查看每个CPU使用情况示例说明默认视图按下 1 键后的视图 如何使用 htop和top之间比较用户界面和可用性功能和特…

服务器信息获取工具

功能介绍 SSH连接到远程服务器&#xff1a; 用户可以输入目标服务器的IP地址、用户名、密码以及SSH端口&#xff08;默认22&#xff09;。 工具会尝试连接到远程服务器&#xff0c;并在连接失败时显示错误信息。 运行命令并返回输出&#xff1a; 工具可以在远程服务器上运…

游戏AI的创造思路-技术基础-决策树(1)

决策树&#xff0c;是每个游戏人必须要掌握的游戏AI构建技术&#xff0c;难度小&#xff0c;速度快&#xff0c;结果直观&#xff0c;本篇将对决策树进行小小解读~~~~ 目录 1. 定义 2. 发展历史 3. 决策树的算法公式和函数 3.1. 信息增益&#xff08;Information Gain&…

枚举对象序列化规则(将Java枚举转换为JSON字符串的步骤)

文章目录 引言I 案例分析1.1 接口签名计算1.2 请求对象1.3 枚举对象序列化II 在JSON中以枚举的code值来表示枚举的实现方式2.1 自定义toString方法返回code引言 在Java中,每个对象都有一个toString方法,用于返回该对象的字符串表示。默认情况下,Enum类的toString方法返回的…

dbeaver连接postgresql报错��������: �û� “root“ Password ��֤ʧ��

文章目录 问题描述解决办法 问题描述 新安装完成的postgresql通过dbeaver连接访问报错&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;: &#xfffd;&#xfffd; “root” Password &#xfffd;&#xfffd;֤ʧ&#…

绝区柒--LLM简史

这是一系列LLM介绍的可成&#xff0c;分以下五个不分 序言&#xff1a;大型语言模型LLM简史第一部分&#xff1a;代币化——完整指南第 2 部分&#xff1a;使用 Python 中的 Scratch 从零开始使用 word2vec 进行词嵌入第 3 部分&#xff1a;用代码解释自注意力机制第 4 部分&a…

揭秘“消费即赚”的循环购模式

大家好&#xff0c;我是吴军&#xff0c;今天我将带您深入探索一种颠覆传统的新型商业模式——循环购模式。在这个模式中&#xff0c;消费者不仅能享受到购物的乐趣&#xff0c;还能通过消费获得实实在在的回报&#xff0c;甚至实现“边消费边赚钱”的奇妙体验。您是否好奇&…

Floyd算法简单理解:不断加中转点更新最短路,实现多对多最短路径

目录 Floyd算法 简单理解 简单例子 Floyd算法简单理解:不断加中转点更新最短路,实现多对多最短路径 Floyd算法 又称为Floyd-Warshall算法,是一种用于求解带权有向图中任意两顶点间的最短路径的算法。该算法利用动态规划的思想,通过不断更新顶点对之间的最短路径来实现。…

Games101——光珊化——深度缓存——shading着色 1

深度缓存 如何解决远近的问题&#xff0c;能正确的覆盖 按照画作来说&#xff0c;先画出远处的物体&#xff0c;再画出近处的物体&#xff0c;近处会将其覆盖&#xff0c;这种算法叫做画家算法 但事实上&#xff0c;排序不仅要花更多的时间&#xff0c;而且排序并不容易&…

Simulink生成代码时端口名称乱码问题

写在最前&#xff1a; 在使用Simulink生成代码时发现端口名称与模型中定义的输如输出端口名称不一致&#xff0c;代码生成的端口名称为随机字符名称。 在生成的H文件中发现&#xff0c;端口定义的结构体名称与模型中实际定义的名称不符。 模型中的定义 检查后发现&#xff0c…

Dbeaver连接人大金仓

Dbeaver 连接 人大金仓。 1、新建驱动管理器 类名&#xff1a;com.kingbase8.Driver URL模板&#xff1a;jdbc:kingbase8://{host}[:{port}]/[{database}] &#xff08;格式&#xff1a;jdbc:kingbase://IP地址:端口号/数据库名称&#xff09;&#xff1b; 默认端口&#x…

【学术会议征稿】第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024)

第八届电气、机械与计算机工程国际学术会议&#xff08;ICEMCE 2024&#xff09; 2024 8th International Conference on Electrical, Mechanical and Computer Engineering 第八届电气、机械与计算机工程国际学术会议&#xff08;ICEMCE 2024&#xff09;将于2024年10月25日…

1区老牌神刊,仅37天录用!网友:“这审稿速度救了我一条命”!

关注GZH【欧亚科睿学术】&#xff0c;GET完整版2023JCR分区列表&#xff01; ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 期刊信息概况 【期刊类型】计算机科学类SCIE&EI 【出版社】ELSEVIER出版社 【期刊概况】IF&#xff1a;4.0-5.0&#xff0c;JCR1区&#xff0c;中科院3区…

MATLAB实现-基于CNN-BiLSTM卷积神经网络结合双向长短期记忆神经网络数据分类预测(多输入多分类)

MATLAB实现-基于CNN-BiLSTM卷积神经网络结合双向长短期记忆神经网络数据分类预测&#xff08;多输入多分类&#xff09; 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行程序。 2.所有程序都经过验证&#xff0c;保证程序可以运行。 3.具有良好的编程习惯&#xff0…

工业机床CNC设备如何上云?

工业机床CNC设备如何上云&#xff1f; 工业机床的计算机数控&#xff08;CNC&#xff09;设备实现远程监控数据上云&#xff0c;是现代制造业智能化转型的关键一环。这一过程不仅能够实时监测设备状态、优化生产流程&#xff0c;还能通过大数据分析提升生产效率与产品质量&…

模型泛化与工程技巧-模型泛化

1. 模型存在问题 1.1 过拟合 过拟合(Overfitting):模型过于紧密或精确地匹配特定数据集,以致于无法良好地拟合其他数据或预测未来的观察结果的现象。通俗的来讲,就是训练的模型在训练集上的精确度很高,但是在测试集上的精确度却很差的现象。 1.2 如何防止过拟合—数据角度 …

汇聚荣拼多多实力怎么样?

汇聚荣拼多多实力怎么样?拼多多作为中国电子商务行业的后起之秀&#xff0c;其市场表现和商业策略引起了广泛的关注。在回答“汇聚荣拼多多实力怎么样?”这一问题时&#xff0c;我们可以明确地看到&#xff0c;拼多多通过其独特的商业模式和创新策略&#xff0c;在竞争激烈的…