C++语法-引用,重载(2)

news/2024/10/28 15:19:45/

引用(reference)

引用就是别名的意思

机器猫 小叮当 哆啦A梦
龙血武姬 龙女 希瓦娜

都是指的是同一个东西

引用的语法


引用既可以指向变量,也可以指向常量int num = 1;int& r_num = num;//num的应用const int& cr = 10;//常量的引用

类型名& 引用名 = …; 引用必须初化
//以上的代码就是相当于给等号右边的内容起一个别名

引用一旦初始化,引用的对象不能改变,终身为其服务,常量的应用题必须用const修饰。

引用作为函数的参数和返回值作为函数参数

普通变量作为函数的参数只能实现值的单向传递

引用作为函数参数可以实现值的双向传递

作为函数的返回值一般函数的返回值只能作为右值


重载

函数重载

C++编译器和C编译器对函数的处理有区别

1.C++中参数列表为()表示没有参数,等同于(void)
2.C++不支持隐式声明,必须前置声明
3.C++的函数不再默认返回int,必须指定返回值类型
4.C++的函数调用匹配不但匹配函数名,还匹配参数列表

概念

C++中函数名相同,形参列表不同的函数构成重载关系,C语言不支持,所谓形参列表不同:

参数个数不同
参数类型不同
参数顺序不同
​
void print();
void print(int);
void print(double);
void print(int,double);
void print(double,int);

重载函数的调用

调用重载函数时,根据传递的实参来选择合适的函数调用。

原理:

C++编译函数时不但记录函数名,还会记录参数列表
函数调用时不但匹配函数名,还匹配参数列表

函数重载的意义

对于类似功能,在不同的数据下可以用一个函数名实现,大大简化了上层调用的复杂度。
练习:
使用函数重载实现两个数的加法(add),两个数可以使两个整数,两个双精度浮点数,也可以是一个双精度浮点数和一个整数。

/*01-函数重载*/
#include <iostream>using namespace std;//以下函数构成重载关系
void print()
{cout<<"print()"<<endl;
}void print(int a)
{cout<<"print(int)"<<endl;
}void print(double a)
{cout<<"print(double)"<<endl;
}void print(int a,double b)
{cout<<"print(int,double)"<<endl;
}void print(double a,int b)
{cout<<"print(double,int)"<<endl;
}int main()
{print();print(1);print(3.15);print(2,4.6);print(1.5,7);//print(12,23);return 0;
}

哑元

如果一个形参只有类型,没有形参名,这种参数就叫哑元

int print(int/哑元/)
{
//…
}

哑元的作用就是实现参数没有区别的函数的重载

/*03-哑元*/
#include <iostream>using namespace std;void print()
{cout<<"print()"<<endl;
}void print(int/*哑元*/)
{cout<<"print(int)"<<endl;
}int main()
{print();print(1);return 0;
}

Train

/*02-加法函数的重载*/
#include <iostream>using namespace std;int add(int a,int b)
{cout<<"add(int,int)"<<endl;return a+b;
}double add(double a,double b)
{cout<<"add(double,double)"<<endl;return a+b;
}double add(int a,double b)
{cout<<"add(int,double)"<<endl;return a+b;
}double add(double a,int b)
{cout<<"add(double,int)"<<endl;return a+b;
}int main()
{cout<<add(1,2)<<endl;cout<<add(1.1,2)<<endl;cout<<add(1.1,2.2)<<endl;cout<<add(1,2.2)<<endl;return 0;
}

练习

设计一个打印整数数组的函数,默认打印前5个元素,默认使用逗号作为分隔符,也可以指定打印个数和分隔符

/*05-打印数组*/
#include <iostream>using namespace std;void print_arr(int *a,int n=5,char op=',')
{//打印到倒数第二个for(int i=0;i<n-1;i++)cout<<a[i]<<op;//打印最后一个cout<<a[n-1]<<endl;
}int main()
{int arr[] = {1,2,3,4,5,6,7,8,9};print_arr(arr);print_arr(arr,7);print_arr(arr,3,' ');print_arr(arr,7,'-');return 0;
}

http://www.ppmy.cn/news/497540.html

相关文章

ChatGPT在前,华为盘古Chat在后

国产盘古Chat对话方面堪比GPT-3.5 什么是ChatGPT&#xff1f;简单来说&#xff0c;就是一个能够和人类自然对话的人工智能系统。它可以理解你的语言&#xff0c;回答你的问题&#xff0c;甚至给你提供建议和服务。它不仅可以处理文字&#xff0c;还可以处理图片、视频、音频等…

微信小程序授权打开摄像头,授权相册保存图片

1、授权打开摄像头 doTakePhoto() {let that thiswx.getSetting({success(res) {// 第一次未授权if (res.authSetting[scope.camera] undefined) {wx.authorize({scope: scope.camera,success() {// 授权成功...}})}// 第二次未授权else if (!res.authSetting[scope.camera]…

鸿蒙系统兼容微软,效仿华为鸿蒙系统!微软放大招:新版Win10系统兼容安卓应用...

【12月1日讯】相信大家都知道&#xff0c;华为鸿蒙OS2.0系统手机Bate版本即将在12月16日正式发布&#xff0c;届时有关于华为鸿蒙手机OS系统的所有细节都将得到曝光&#xff0c;这也是广大网友们最为期待的东西&#xff0c;但就在11月28日&#xff0c;根据媒体最新报道&#xf…

微软明年停止支持IE浏览器 鼓励使用Edge浏览器

微软在其官方社区宣布自今年 11 月 30 日起&#xff0c;Microsoft Teams Web 应用将逐步停止对IE11的支持&#xff1b;从 2021 年 8 月 17 日起&#xff0c;IE 11 浏览器将不再支持微软旗下包括Office365&#xff0c;OneDrive 云盘&#xff0c;Outlook 邮箱等办公软件服务。微软…

python微软雅黑字体_win10+python3.7下matplotlib显示中文,可使用微软雅黑.md

win10+python3.7下matplotlib显示中文,可使用微软雅黑和思源黑体 更新时间20200109 网上很多教程,基本上都没用有效解决win10下matplotlib显示中文雅黑的问题,测试了几种方式后,发现一种最简单的方法,记录如下: 一、实现显示中文 import matplotlib.pyplot as plt plt.rc…

Windows 11 有望支持苹果 M1 Mac?微软和高通的秘密协议即将到期

上个月 5 号&#xff0c;Windows 11 正式发布&#xff0c;虽然伴随着不断的骂声&#xff0c;但不可否认的是&#xff0c;还是有许多人想尝尝这“苹果味儿”的 Windows 界面&#xff0c;其中就包括部分 M1 Mac 用户。 可惜&#xff0c;今年 9 月微软曾明确表示在苹果 M1 芯片上…

微软云服务器机房分布,Azure手把手系列 1:微软中国公有云概述

很久没有写文章了,主要也是疏于自己的懒惰,对于IT技术的放弃,但我相信浪子回头金不换,所以我又回来了。 相信现在还在泡博客的还在做IT的,或多或少都听过云、私有云及公有云的概念,那么今天给大家分享的是微软在中国的公有云服务。这里我就不再浪费口水的去描述什么是公有…

微软PowerShell新增OpenSSH支持

OpenSSH Logo Windows和Linux系统管理员之间的差距正在缩小&#xff0c;主要是由于微软开始支持OpenSSH。 Unix和Linux系统管理员每天使用OpenSSL和OpenSSH来安全地管理他们的服务器。而微软已经集成Linux至他的Windows Cloud和Server&#xff0c;不过其客户想要支持OpenSSH。…