C++核心高级编程 --- 3、函数提高

文章目录

    • 第三章:
      • 3.函数提高
        • 3.1 函数默认参数
        • 3.2 函数占位参数
        • 3.3 函数重载
          • 3.3.1 函数重载概述
          • 3.3.2 注意事项

第三章:

3.函数提高

3.1 函数默认参数

语法结构:返回值类型 函数名 (参数 = 默认值){}

#include <iostream>
using namespace std;int func1(int a = 1, int b = 2, int c = 3)
{return a + b + c;
}int func2(int a = 1, int b = 2);int func2(int a , int b)
{return a + b;
}int main()
{int num1 = func1();int num2 = func2();cout << num1 << endl; //6cout << num2 << endl; //3system("pause");return 0;
}

补充:

  1. 如果某位置参数有默认值,那该位置往后,从左向右,都需要有默认值。

  2. 如果函数声明有默认值,函数实现的时候就不能有默认参数。

3.2 函数占位参数

语法结构:返回值类型 函数名

#include <iostream>
using namespace std;void func(int a , int) //占位参数也可有默认参数
{cout << "func函数的调用" << endl;
}int main()
{func(10, 20);     //占位参数必须填补system("pause");return 0;
}
3.3 函数重载
3.3.1 函数重载概述

作用:函数名可相同,提供复用性。

满足条件:

  • 同一作用域下

  • 函数名相同

  • 函数参数类型不同或个数不同或顺序不同

#include <iostream>
using namespace std;void func()
{cout << "func函数的调用" << endl;
}void func(int a)
{cout << "func(int a)函数的调用" << endl;
}void func(int a, double b)
{cout << "func(int a, double b)函数的调用" << endl;
}int main()
{func();            //func函数的调用func(10);        //func(int a)函数的调用func(10, 3.14); //func(int a, double b)函数的调用system("pause");return 0;
}

补充:函数返回值不可作函数重载条件。

3.3.2 注意事项
  • 将引用作为重载条件

  • 函数重载遇到函数默认参数

//将引用作为重载条件
#include <iostream>
using namespace std;void func(int& a)
{cout << "func(int& a)函数的调用" << endl;
}void func(const int& a)
{cout << "func(const int& a)函数的调用" << endl;
}int main()
{int a = 10;func(a);  //func(int& a)函数的调用func(10); //func(const int& a)函数的调用system("pause");return 0;
}
//函数重载遇到函数默认参数
#include <iostream>
using namespace std;void func(int a)
{cout << "func(int a)函数的调用" << endl;
}void func(int a, int b =10)
{cout << "func(int a, int b =10)函数的调用" << endl;
}int main()
{int a = 10;func(10);  //报错,出现二义性。system("pause");return 0;
}

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

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

相关文章

3.30学习日志

数值稳定性 神经网络的梯度 t表示层&#xff0c;h^t是隐藏层&#xff0c;y是要优化的目标函数&#xff0c;不是预测还包括了损失函数 损失函数l关于参数Wt的梯度&#xff1a;由链式法则&#xff0c;损失函数l关于最后一层隐藏层求导*最后一层隐藏层对倒数第二层隐藏层求导*……

游戏引擎中的物理系统

一、物理对象与形状 1.1 对象 Actor 一般来说&#xff0c;游戏中的对象&#xff08;Actor&#xff09;分为以下四类&#xff1a; 静态对象 Static Actor动态对象 Dynamic Actor ---- 可能受到力/扭矩/冲量的影响检测器 TriggerKinematic Actor 运动学对象 ---- 忽略物理法则…

【一天一坑系列】系统接口调用过程中,Hystrix居然“莫名其妙”的熔断降级到了fallback方法,并且无法恢复

1、异常描述 近期做了一个功能模块的限流熔断处理&#xff0c;使用的是hystrix来做熔断处理。具体的配置如下&#xff1a; DefaultProperties(defaultFallback "customFallBackMethod",commandProperties {HystrixProperty(name "circuitBreaker.enabled&q…

Java | Leetcode Java题解之第5题最长回文子串

题目&#xff1a; 题解&#xff1a; class Solution {public String longestPalindrome(String s) {int start 0, end -1;StringBuffer t new StringBuffer("#");for (int i 0; i < s.length(); i) {t.append(s.charAt(i));t.append(#);}t.append(#);s t.to…

深入理解Java内存模型及其作用

目录 1.前言 2.为什么要有 Java 内存模型&#xff1f; 2.1 一致性问题 2.2 重排序问题 3.Java 内存模型的定义 4.规范内容 4.1 主内存和工作内存交互规范 4.2 什么是 happens-before 原则&#xff1f; 1.前言 当问到 Java 内存模型的时候&#xff0c;一定要注意&#…

Docker 哲学 - push 本机镜像 到 dockerhub

注意事项&#xff1a; 1、 登录 docker 账号 docker login 2、docker images 查看本地镜像 3、注意的是 push镜像时 镜像的tag 需要与 dockerhub的用户名保持一致 eg&#xff1a;本地镜像 express:1 直接 docker push express:1 无法成功 原因docker不能识别 push到哪里 …

磁盘如何分配数据数据

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 磁盘如何分配数据 数据切割&#xff1a; 按照固定长度进行切割---》编码翻译&#xff08;常用&#xff09; 计算机要求按照8bit(字节)进…

MySQL 8.0.13安装配置教程

写个博客记录一下&#xff0c;省得下次换设备换系统还要到处翻教程&#xff0c;直接匹配自己常用的8.0.13版本 1.MySQL包解压到某个路径 2.将bin的路径加到系统环境变量Path下 3.在安装根目录下新建my.ini配置文件&#xff0c;并用编辑器写入如下数据 [mysqld] [client] port…

01 Python进阶:正则表达式

re.match函数 使用 Python 中的 re 模块时&#xff0c;可以通过 re.match() 函数来尝试从字符串的开头匹配一个模式。以下是一个简单的详解和举例&#xff1a; import re# 定义一个正则表达式模式 pattern r^[a-z] # 匹配开头的小写字母序列# 要匹配的字符串 text "h…

reFlow和rePaint

重排和重绘 浏览器渲染原理reFlow重新布局rePaint重绘扩展信息为什么 transform 的效率高?浏览器渲染原理 想要理解reFlow和rePaint,就需要先明白浏览器渲染一个html字符串文档的流程。打开一个浏览器标签页,地址栏输入地址回车之后,浏览器进程会开启一个网络进程,获取对…

【HTML】标签学习(下.2)

&#xff08;大家好哇&#xff0c;今天我们将继续来学习HTML&#xff08;下.2&#xff09;的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 二.列表标签 2.1 无序列表(重点) 2.2有序列表(理解) 2.3 自定义列表(重点…

QT网络调试助手

QT网络调试助手 1.开发流程 2.QTtcp服务器   1.1 服务端数据读取   1.2 服务端发送数据-所有客户端   1.3 服务端自动刷新ip地址   1.4 服务端检测客户端断开状态   1.5 服务端发送数据-指定特定客户端发送数据   1.6 服务端停止监听和断开 3.QTtcp客户端 1…

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

本身这个问题之前未找到很好的解决办法&#xff0c;本地请求Https请求URL时&#xff0c;一直没有问题&#xff0c;在线上服务器上时&#xff0c;总是出现javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure的问题&#xff0c; 1、开始以为双方的协…

mathematical-expression(MAE)数学表达式 数学函数 解析编译库,有效的快速和简单易用的数学和计算机的编译器

数学表达式 Switch to English Document 介绍 本框架是一种针对数学公式解析的有效工具&#xff0c;能够解析包含嵌套函数&#xff0c;包含函数&#xff0c;数列步长累加等数学公式&#xff0c;返回值是一个数值的结果对象&#xff0c;同时也可以进行比较运算的操作&#xf…

基于语音控制的智能家居系统设计

基于语音控制的智能家居系统设计 一、系统概述 本系统将利用先进的语音识别技术&#xff0c;结合智能家居控制模块&#xff0c;为用户打造一套便捷、高效且安全的语音控制智能家居系统。用户可以通过简单的语音指令&#xff0c;实现对家中各类智能设备的控制&#xff0c;从而…

为什么蓝牙信道探测将引领高精度定位服务?

从蓝牙耳机到智能家居设备&#xff0c;蓝牙技术因其成熟的音频流和数据传输功能已成为我们生活中的一部分。一项新技术——蓝牙信道探测&#xff08;Bluetooth Channel Sounding&#xff09;正向高精度定位服务市场迈进。 本文信驰达&#xff08;RF-star&#xff09;将介绍蓝牙…

数码论坛系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)电子科技数码爱好者交流信息新闻畅聊讨论评价

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

使用TCP协议就一定零丢包了吗?

简述数据包发送流程 为了简化模型&#xff0c;我们把中间的服务器给省略掉&#xff0c;假设这是个端到端的通信。且为了保证消息的可靠性&#xff0c;它们之间用的是TCP协议进行通信。 为了发送数据包&#xff0c;两端首先会通过三次握手&#xff0c;建立TCP连接。 一个数据包&…

Unity | Shader基础知识(第十一集:什么是Normal Map法线贴图)

目录 前言 一、图片是否有法线贴图的视觉区别 二、有视觉区别的原因 三、法线贴图的作用 四、信息是如何存进去的 五、自己写一个Shader用到法线贴图 六、注意事项 七、作者的话 前言 本小节会给大家解释&#xff0c;什么是法线贴图&#xff1f;为什么法线贴图会产生深…

Spring源码分析(BeanFactory)

文章目录 Spring源码分析&#xff08;BeanFactory&#xff09;一、BeanFactory二、ApplicationContext 的父系1、HierarchicalBeanFactory2、ListableBeanFactory3、EnvironmentCapable4、ApplicationEventPublisher5、MessageSource6、ResourcePatternResolver 三、Applicatio…