C++核心编程:函数提高

news2024/7/3 18:39:20

函数默认参数

在C++中,函数的形参列表是可以有默认值的。
语法:

返回值类型  函数名  (参数 = 默认值){}

示例:

#include<iostream>
using namespace std;

//函数默认参数

//如果我们传入了自己的数据就使用自己的数据,否则就是使用默认值
//语法: 返回值类型 函数名(形参 = 默认值){}

int func(int a, int b = 20, int c = 30)
{
	return a + b + c;
}
//注意事项
//1、如果某个位置已经有了默认参数,那么从这个位置往后从左到右,都必须有默认值
//int func02(int a, int b = 10, int c)
//{
//	return a + b + c;
//}

//2、如果函数声明有了默认参数,函数的实现就不能有默认参数
// 声明和实现只能有一个有默认参数
//原因:二义性

int func2(int a = 10, int b = 10);
int func2(int a, int b)
{
	return a + b;
}
int main()
{

	cout << func(10, 30) << endl;
	cout << func2(10, 30) << endl;
	//cout << func02(10) << endl;
	system("pause");

	return 0;
}
  • 第一注意点
    在这里插入图片描述
    在这里插入图片描述
  • 第二注意点
    在这里插入图片描述在这里插入图片描述

笔记:
在这里插入图片描述

函数占位参数

C++ 中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置

语法

返回值类型 函数名(数据类型){}

函数占位参数存在意义在后面的学习中会使用到该技术。
示例:

#include<iostream>
using namespace std;

//占位参数
//返回值类型 函数名 (数据类型){}

//目前阶段的占位参数 我们还用不到 后面学习深入会用到
//占位参数可以有默认参数void func(int a , int = 10)
void func(int a , int )
{
	cout << " this is a function" << endl;
}
int main()
{
	func(10,10);

	system("pause");

	return 0;
}

在这里插入图片描述

笔记:
在这里插入图片描述

函数重载

函数重载概述

作用:函数名可以相同,提高复用性
函数重载满足条件

  • 同一个作用域下
  • 函数名称相同
  • 函数参数类型不同或者个数不同或者顺序不同

注意:函数的返回值不可以作为函数重载的条件
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

示例:

#include<iostream>
using namespace std;

//函数重载
//可以让函数名相同,提高复用性

//函数重载满足条件
//1、同一个作用域下
//2、函数名称相同
//3、函数参数类型不同,或者个数不同,或者顺序不同
void func()
{
	cout << "func的调用" << endl;
}

void func(int a)
{
	cout << "func(int a)的调用!" << endl;
}

void func(double a)
{
	cout << "func(double a)的调用!" << endl;
}

void func(int a,double b)
{
	cout << "func(int a,double b))的调用!" << endl;
}

void func(double a, int b)
{
	cout << "func(double a, int b)的调用!" << endl;
}

//注意事项
//函数的返回值不可以作为函数重载的条件(返回值不同不是重载)
//int func(double a, int b)
//{
//	cout << "func(double a, int b)的调用!" << endl;
//}

int main()
{
	//func();
	//func(10);
	//func(3.14);
	//func(10, 3.14);
	func(3.14, 10);

	system("pause");

	return 0;
}

笔记:
在这里插入图片描述
在这里插入图片描述

函数重载注意事项

  • 引用作为重载条件
  • 函数重载碰到函数默认参数
    在这里插入图片描述

在这里插入图片描述

示例:

#include<iostream>
using namespace std;

//函数重载的注意事项
//1、引用作为重载的条件


void func(int &a)
{
	cout << "func(int &a)调用" << endl;
}

void func(const int &a)//const int& a = 10;相当与创建了一个临时数据,让a指向那个临时空间
{
	cout << "func(const int &a)调用" << endl;
}

//2、函数重载碰到的默认参数
void func2(int a,int b = 10)
{
	cout << "func2(int a,int b)的调用" << endl;
}
void func2(int a)
{
	cout << "func2(int a)的调用" << endl;
}

int main()
{
	//int a = 10;//变量 可读可写  
	//func(a);//此时传入会使用非const版本

	//func(10);//此段如果还是使用非const版本,语法就会变为 int &a=10;非法语法(引用不可以=10),走const版本语法就是 const int &a=10;为合法语法。

	//func2(10);//当函数重载碰到默认参数,出现二义性,报错,避免出现这种情况。写函数重载尽量避免写默认参数
	system("pause");

	return 0;
}

笔记:
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

联合体union

结构体中的成员彼此是独立存在的&#xff0c;分布在不同的内存单元中 共用体的成员是“一体的”&#xff0c;使用同一个内存单元 #include<stdio.h> int main() {union u {int n;char c[4];};union u u1;u1.n 0x11223344;printf("%x\n", u1.n); …

软工导论知识框架(六)面向对象分析

前言&#xff1a;绘制各种类型的图是重点&#xff0c;对于面向对象建模中需要绘制的图总结在第五期中&#xff1a; ​软工导论知识框架&#xff08;五&#xff09;面向对象方法学 一.分析过程 1.获取需求 与用户交谈&#xff0c;向用户提问题&#xff1b; 参观用户的工作流…

YOLOv5可视化界面

Pyside6可视化界面 安装Pyside6 激活之前的虚拟环境yolov5 在该环境的终端输入以下命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside6输入where python找到当前使用的Python的路径 找到该路径下的designer.exe文件&#xff08;/Lib/site-packages/PySi…

IP地址定位技术在电商行业的应用

IP地址定位技术在电商行业的广泛应用引起了行业内外的广泛关注。该技术能够提供精确的位置信息&#xff0c;对于电商运营商而言有助于提供更加个性化和便捷的购物体验。 IP地址定位是一种通过Internet协议&#xff08;IP&#xff09;地址识别用户地理位置的技术。在电商行业中&…

windows录屏指南,最详细的教程来了!

在现代科技时代&#xff0c;录屏成为了一种非常常见的技术&#xff0c;它可以让我们轻松记录电脑屏幕上的内容&#xff0c;包括教学、演示、游戏体验等。windows作为全球最流行的操作系统之一&#xff0c;自然也提供了多种方式来录制屏幕。本文将为您介绍三种windows录屏方法&a…

B2B2C多用户手机购物商城快速搭建(java开源)

要快速搭建一个B2B2C多用户手机购物商城&#xff0c;需要使用Java语言和开源框架进行开发。以下是一个基本的搭建步骤&#xff1a; 选择合适的开发框架 首先需要选择一个适合开发B2B2C多用户手机购物商城的Java开源框架&#xff0c;它提供了丰富的功能模块和灵活的扩展性&…

cesium学习记录05-加载数据

1. 矢量数据&#xff1a; 1.1. GeoJSON 定义&#xff1a; 一个基于JSON的地理数据格式&#xff0c;Cesium支持GeoJSON的直接加载。 例子&#xff1a; 加载一个简易故宫建筑的GeoJSON数据。 代码&#xff1a; /*** 添加故宫geojson数据*/AddGuGong() {var viewer this.v…

基于百度语音识别API智能语音识别和字幕推荐系统——深度学习算法应用(含全部工程源码)+测试数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 翻译3. 格式转换4. 音频切割5. 语音识别6. 文本切割7. main函数 系统测试工程源代码下载其它资料下载 前言 本项目基于百度语音识别API&#xff0c;结合了语音识别、视频转换音频识别以及语句停顿…

从数据仓库到数据结构:数据架构的演变之路

在上个世纪&#xff0c;从电子商务巨头到医疗服务机构和政府部门&#xff0c;数据已成为每家组织的生命线。有效地收集和管理这些数据可以为组织提供宝贵的洞察力&#xff0c;以帮助决策&#xff0c;然而这是一项艰巨的任务。 尽管数据很重要&#xff0c;但CIOinsight声称&…

【C++】AVL树模拟实现插入功能

AVL树模拟实现插入 前言正式开始树节点树insert旋转左单旋右单旋左右双旋右左双旋 用旋转来平衡树测试 前言 本篇主要介绍AVL树的插入功能。其中就包含了最重要的旋转。 通过旋转来使得树平衡&#xff0c;是学习AVL树的一个重点&#xff0c;也是也是一个难点。 正式开始 先…

虹科方案 | 汽车总线协议转换解决方案

汽车总线&#xff1a; 汽车总线是一种用于在车辆电子系统中传输数据和控制信息的通信系统。它允许不同的电子控制单元&#xff08;ECU&#xff09;在车辆中相互通信&#xff0c;协调各个系统的操作&#xff0c;以实现功能的集成和协同工作。 在现代汽车中&#xff0c;综合通信…

提高办案效率:公检系统引入自动校对技术

引入自动校对技术到公检系统中可以有效提高办案效率。自动校对技术结合公检系统的特点&#xff0c;可以在以下方面提高办案效率&#xff1a; 1.节省时间&#xff1a;自动校对技术可以快速检测和修正法律文书中的语法、拼写和标点符号等错误。与手动校对相比&#xff0c;自动校对…

dfs+回溯做题笔记

题目链接&#xff1a;t矩阵中的路径_牛客题霸_牛客网 参考代码&#xff1a; import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param matrix char字符型二维数组 * param …

虹科方案 | 汽车总线协议转换解决方案(二)

上期说到&#xff0c;虹科的PCAN-LIN网关在CAN、LIN总线转换方面有显著的作用&#xff0c;尤其是为BMS电池通信的测试提供了优秀的解决方案。假如您感兴趣&#xff0c;可以点击文末相关链接进行回顾&#xff01; 而今天&#xff0c;虹科将继续给大家带来Router系列在各个领域的…

个推消息推送专项运营提升方案,基于AIGC实现推送文案智能生成

个推消息推送专项运营提升方案自今年3月份发布以来&#xff0c;已应用于游戏社交、影音资讯、电商购物等多个行业。现个推消息推送专项运营提升方案又实现了推送策略的智能化和推送流程的自动化&#xff0c;助力APP进一步提升消息推送的效率和效果。 丰富推送策略组合&#xf…

Tomcat10.1源码安装与部署

安装JDK 1、下载jdk17 [rootmysql80 ~]# wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz[rootmysql80 ~]# ll -h jdk-17_linux-x64_bin.tar.gz -rw-r--r--. 1 root root 174M Mar 18 03:53 jdk-17_linux-x64_bin.tar.gz2、安装目录[rootmysql8…

第三方电容笔怎么样?apple pencil的平替笔

在当今世界&#xff0c;高科技已经成为推动电子产品迅速发展的重要动力。无论是工作&#xff0c;还是学习&#xff0c;iPad平板都很方便。iPad平板电脑将会和我们的生活联系在一起&#xff0c;不管是现在还是未来。iPad配上一支简单的电容笔&#xff0c;不仅提高了工作效率&…

数据库管理-第九十七期 以一当十的数据库路线(20230810)

第九十七期 以一当十的数据库路线&#xff08;20230810&#xff09; 距离上一期已经过去了整整9天了&#xff0c;相较于前几个月的“生产队的驴”&#xff0c;确实慢了很多&#xff0c;归根结底有几点&#xff1a;一是19c OCM的相关内容暂时告一段落&#xff0c;少了一半内容&…

从NPM注册中心获取包

目录 1、搜索和选择要下载的包 1.1 为什么使用 1.2 工作原理 1、质量 2、维护 3、受欢迎程度 4、名气 1.1、开始搜索包 2、在本地安装下载和安装软件包 2.1 安装未限定作用域的包 2.2 安装有作用域的公共包 2.3 安装私有包 2.4 测试包安装 2.5 已安装的软件包版本…

LeetCode算法递归类—两两交换链表中的节点

目录 24. 两两交换链表中的节点 题解&#xff1a; 代码&#xff1a; 运行结果&#xff1a;​编辑 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节…