C++ (Chapter 2)

news2025/2/27 17:11:58

C++(二)

1.缺省参数

在C++中,在函数定义的时候,可以为形参指定一个默认值,也称作缺省值.如果在调用这个函数时没有传参,那么函数在执行的时候就采用该实参的缺省值,否则使用实参的值.

例如:

#include<iostream>
using namespace std;
void Add(int x, int y = 10)
{
	cout << x + y << endl;
}
int main()
{
	Add(1);
	return 0;
}

运行结果:
在这里插入图片描述

此处在调用时值传递了一个参数,这个参数会赋值给第一个形参,第二个形参没有赋值,就会使用默认的10进行运算.

假如我们为两个参数都指定值:

#include<iostream>
using namespace std;
void Add(int x, int y = 10)
{
	cout << x + y << endl;
}
int main()
{
	Add(1,2);
	return 0;
}

运行结果:
在这里插入图片描述

注意:当要给部分参数赋默认值时,要从右边到左边依次给参数赋默认值.如下:

void Add(int x, int y = 10,int z = 10)
{
	cout << x + y + z << endl;
}
int main()
{
	Add(1);
	return 0;
}

运行结果:
在这里插入图片描述

void Add(int x, int y = 10,int z = 10)
{
	cout << x + y + z << endl;
}
int main()
{
	Add(10,20);
	return 0;
}

运行结果:
在这里插入图片描述

注意:

  • 在函数的定义和声明中不能同时包含缺省参数,不然会发生冲突,在一个完整的项目中,缺省参数最好是出现在函数的声明中.
  • 缺省参数必须从右到左依次给,不能间隔着给.
  • 缺省值只能是全局变量或者是常量,但是在很多情况下,缺省值都是常量为主.
  • C语言不支持函数带有缺省值.

2.函数重载

在人们的自然语言中,一句话往往在不同的语境中会有不同的含义,特定的语境会有特殊的含义,即这句话被重载了.

函数重载的概念:函数重载是函数的一种特殊状况,C++允许在同一个作用域中声明几个功能类似的同名函数.这些同名函数的形参列表(形参个数 或者 形参类型 或者 形参顺序 )不同.

形参类型不同:

#include<iostream>
using namespace std;
void Add(double x, double y)
{
	cout << x + y << endl;
}
void Add(int x, int y )
{
	cout << x + y << endl;
}
int main()
{
	Add(10,20);
    Add(1.2, 3.4);
	return 0;
}

形参个数不同:

#include<iostream>
using namespace std;
void Add(int x, int y)
{
	cout << x + y << endl;
}
void Add(int x, int y,int z)
{
	cout << x + y + z << endl;
}
int main()
{
	Add(10, 20,30);
	Add(10,20);
	return 0;
}

形参顺序不同:

#include<iostream>
using namespace std;
void Add(char x, int y)
{
	cout << x + y << endl;
}
void Add(int x, char y)
{
	cout << x + y << endl;
}
int main()
{
	Add('a', 20);
	Add(10,'a');
	return 0;
}

注意: 如果两个函数的形参列表相同,只是返回值不同是无法构成重载的.

请看下面这种函数重载与缺省参数写法:看是否会报错呢??

int Func(int x = 10)
{
	return x;
}
void Func()
{
	cout << "this is Func()" << endl;
}
int main()
{
    Func();
	return 0;
}

编译是无法通过的,因为Func()调用时,不知道到底是调用无参函数,函数调用有缺省值的函数.

为什么C++支持函数重载呢?

因为C++编译器修饰函数之后会变成 [_Z+函数名所占用字符个数+函数名+类型首字母],例如我在test.c文件下写了这样一段代码:

#include<stdio.h>
float Func(int x,float y)
{
	return x - y;
}
int Add(int x,int y)
{
	return x + y;
}
int main()
{
	float x = Func(3,2.1);
	int y = Add(1,2);
	printf("lf",x);
	printf("%d",y);
	return 0;
}

接着在linux环境下使用C和C++两种编译器,查看最后生成的.o文件

使用C++编译方式:
在这里插入图片描述
在这里插入图片描述

使用C语言编译方式:

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

  • 那么最后通过这里就理解了C语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。

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

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

相关文章

结合源码聊一聊为何线上RocketMQ偶尔出现system busy

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 RocketMQ 版本 5.1.0 背景 继之前研究过的RocketMQ发送消息还有这种坑&#xff1f;遇到SYSTEM_BUSY不重试&#xff1f; 今天我们来分析分析RocketMQ什么情况下…

从概念到现实:ChatGPT 和 Midjourney 的设计之旅

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在现代技术的世界中&…

媒体基础:打开多模态大模型的新思路

编者按&#xff1a;2023年是微软亚洲研究院建院25周年。25年来&#xff0c;微软亚洲研究院探索并实践了一种独特且有效的企业研究院的新模式&#xff0c;并以此为基础产出了诸多对微软公司和全球社会都有积极影响的创新成果。一直以来&#xff0c;微软亚洲研究院致力于创造具有…

【Js】数据处理

一、对象 1&#xff09;、Object. hasOwnProperty&#xff08;&#xff09; hasOwnProperty() 方法会返回一个布尔值&#xff0c;指示对象自身属性中&#xff08;非继承属性&#xff09;是否具有指定的属性&#xff0c; 如果 object 具有带指定名称的属性&#xff0c;则 hasOwn…

AT2401C 功率放大器(PA)射频前端集成芯片

AT2401C 功率放大器&#xff08;PA&#xff09;射频前端集成芯片&#xff0c;它是一款面向Zigbee&#xff0c;无线传感网络以及其他2.4GHz 频段无线系统的全集成射频功能的射频前端单芯片。AT2401C 内部集成了功率放大器(PA)&#xff0c;低噪声放大器(LNA)&#xff0c;芯片收发…

学习小程序开发一:基本的组件学习使用

文章目录 01-小程序的宿主环境-组件一、小程序中组件的分类二、常用的视图容器类组件三、view组件的基本使用1、list.wxml代码实现2、list.wxss代码实现 四、scroll-view组件的基本使用实现步骤&#xff1a;1、list.wxml代码实现2、list.wxss代码实现 五、swiper 和 swiper-ite…

软件外包开发流程

软件外包是将软件开发任务委托给外部供应商或团队的一种常见做法。以下是软件外包的一般流程以及需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 软件外包流程&#xff1a; 确定需求&…

基于JavaWeb的图书售卖网站(源码+部署+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于JavaWeb的图书售卖网…

1688拍立淘接口,按图搜索1688商品接口,图片搜索商品接口,1688API接口

按图搜索1688商品的方法如下&#xff1a; 打开1688平台&#xff0c;点击首页右上角的搜索框&#xff0c;进入搜索页面。 点击搜索框右侧的相机图标&#xff0c;选择“拍照”或“相册”&#xff0c;上传你想要搜索的图片。 等待图片上传完成&#xff0c;系统会自动识别图片中的…

一文读懂flutter线程: 深入了解Flutter中的多线程编程

深入了解Flutter中的多线程编程 前言一、为什么需要多线程&#xff1f;二、在Flutter中创建线程三、多线程的最佳实践四、Flutter中的多线程示例五、Flutter中的多线程错误处理六、Flutter中的多线程性能优化七、安全性和隐私考虑八、跨平台性考虑 总结 前言 在移动应用开发领域…

高校教务系统登录页面JS分析——安徽工程大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

五.镜头知识之镜片组成 与 六.镜头知识之滤光片与IRCUT

五.镜头知识之镜片组成 文章目录 五.镜头知识之镜片组成5.1 线激光模组镜头手册5.2 镜片组成5.3 **正透镜&#xff08;Positive Lens&#xff09;**和**负透镜&#xff08;Negative Lens&#xff09;**5.3.1 **近视镜是凸透镜还是凹透镜&#xff1f;** 六.镜头知识之滤光片与IR…

多模态大模型:ChatGPT迎来重磅升级,开启看图、听声音的新时代

近日&#xff0c;OpenAI宣布对ChatGPT进行了重磅升级&#xff0c;实现了看图、听声音和输出语音内容的功能。这一突破标志着通用人工智能&#xff08;AGI&#xff09;的重要里程碑&#xff0c;为未来的发展开启了全新的时代。OpenAI计划在未来两周向Plus和企业版用户提供这些功…

思科拟推出PuzzleFS驱动,采用Rust语言开发

据了解&#xff0c;PuzzleFS宣称是“下一代 Linux 容器文件系统”&#xff0c;并使用Rust语言编写&#xff0c;具有“快速镜像构建”、“直接挂载支持”、“内存安全保证”等功能mroeoyw。 Multiable万达宝制造ERP(www.multiable.com.cn/solutions_zz)支持自定义栏位,并智能制…

【Unity】VR开发基础1-工具准备-下载Unity

用VR开发&#xff0c;首选Unity。 所以我们先从下载Unity开始。 前往unity.com/download&#xff0c;大家的系统基本都是Windows&#xff0c;我也是&#xff0c;所以下载Windows版本。 安装完成后打开UnityHub&#xff0c;点击安装选项卡&#xff0c;点击安装编辑器。 选择…

海外媒体发稿:10大海外媒体推广秘诀助力你的全球业务飞跃-华媒舍

随着全球化的深入&#xff0c;越来越多的企业开始将目光投向海外市场。而对于海外市场的开拓&#xff0c;海外媒体推广成为一个不可或缺的重要手段。本文将为大家介绍10大海外媒体推广秘诀&#xff0c;助力你的全球业务飞跃。 1. 确定目标受众 要明确你的目标受众是谁。不同的…

mysql数据库为什么要使用连接池?

连接池是MySQL数据库访问的关键组件&#xff0c;它负责管理和维护一组数据库连接&#xff0c;允许应用程序高效地重用这些连接&#xff0c;从而降低了连接的建立和断开开销&#xff0c;提高了性能、资源利用率和可伸缩性。 &#xff08;一&#xff09;为什么要用连接池&#x…

pytorch学习第二篇:张量

tensor与numpy import torch import numpy as npnumpy数组 到 张量tensor n np.ones(5) t torch.from_numpy(n)NumPy 数组中的变化反映在张量中 np.add(n, 1, outn) print(f"t: {t}") print(f"n: {n}")张量到 NumPy 数 t torch.ones(5) print(f&quo…

[ spring boot入门 ] java: 错误: 无效的源发行版:17

因为我目前idea中使用的是jdK8&#xff0c;而在pom.xml文件里是17&#xff0c;所以我需要将所有地方修改为jdk8 pom.xml的jdk版本为8 maven的setting.xml文件 jdk为8 还有Java Compiler 还有Project Structure 里面的project 和 module

2023北京市人工智能大模型场景融合与产业发展专场活动盛大召开

2023年10月12日&#xff0c;“2023北京市人工智能大模型场景融合与产业发展专场”活动在中关村软件园国际会议中心盛大召开&#xff0c;本次活动作为助力北京民营企业创新领跑行动计划的专场活动&#xff0c;由北京市委网信办、北京市科委、中关村管委会、北京市经信局、北京市…