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

函数默认参数

在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.hqwc.cn/news/61235.html

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

相关文章

TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度,减少内存占用

TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度&#xff0c;减少内存占用 TextBrewer是一个基于PyTorch的、为实现NLP中的知识蒸馏任务而设计的工具包&#xff0c; 融合并改进了NLP和CV中的多种知识蒸馏技术&#xff0…

Linux简介及基础操作

简介&#xff1a; 1、linux和windows都是操作系统&#xff0c;多任务&#xff0c;多用户&#xff0c;多线程… Linux免费使用&#xff0c;自由传播&#xff0c;开源 2、Linux 发行版&#xff08;都是基于linux内核穿的外套&#xff09; Ubuntu——嵌入式开发 fedora——早期嵌入…

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透?

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透&#xff1f; 文章目录 如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透&#xff1f;前言1. 在群辉NAS系统下安装cpolar套件2. 管理隧道列表3. 创建固定数据隧道 前言 群晖作为大容量存储系统&#xff0c;既可…

Harbor企业镜像仓库部署

目录 1、案例概述 2、什么是 Harbor 3、Harbor 架构构成 4、案例环境 5、部署harbor环境 安装docker-ce&#xff08;所有主机&#xff09; 阿里云镜像加速器 部署Docker Compose 服务 部署 Harbor 服务 启动并安装 Harbor 创建一个新项目 6、客户端上传镜像 7…

Blender如何给fbx模型添加材质贴图并导出带有材质贴图的模型

推荐&#xff1a;使用 NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 此教程适合新手用户&#xff0c;专业人士直接可直接绕路。 本教程中介绍了利用Blender建模软件&#xff0c;只需要简单几步就可以为模型添加材质贴&#xff0c;图&#xff0c;并且导出带有材质的模型文…

法律监督大数据平台有什么作用?

大数据赋能时代法律监督&#xff0c;构建法律行业领域大数据监督模型。法律监督大数据研判系统助力检察机关以社会公正为核心价值追求&#xff0c;对执法不严、司法不公“零容忍”&#xff0c;强化对诉讼活动的法律监督&#xff0c;坚决维护法律尊严&#xff0c;坚决捍卫公平正…

一、Kubernetes介绍与集群架构

Kubernetes介绍与集群架构 一、认识容器编排工具 docker machine 主要用于准备docker host现已弃用建议使用docker desktop docker compose Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose&#xff0c;您可以使用 YAML 文件来配置应用程序的服务。…

Redis-简单动态字符串(SDS)

文章目录 文章概要SDS数据结构定义SDS和C字符串的区别总结参考 文章概要 本篇文章&#xff0c;我们来学习Redis字符串的编码格式SDS编码&#xff0c;文章将将从以下几个方面介绍SDS&#xff1a; SDS的底层数据结构定义Redis是C写的&#xff0c;那SDS和C中的字符串的区别是什么…

f1tenth仿真设置

文章目录 一、安装依赖二、进入工作空间克隆三、编译四、运行 一、安装依赖 tf2_geometry_msgs ackermann_msgs joy map_server sudo apt-get install ros-noetic-tf2-geometry-msgs ros-noetic-ackermann-msgs ros-melodic-joy ros-noetic-map-server 二、进入工作空间克隆…

爬虫018_urllib库_cookie反爬_post请求百度翻译获取百分翻译内容_以及详细翻译内容---python工作笔记037

然后我们来看如何用urllib发送post请求,这里我们 用百度翻译为例 我们翻译一个spider,然后我们看请求,可以看到有很多 找到sug这个 可以看到这里的form data,就是post请求体中的内容 然后我们点击preview其实就是 返回的实际内容 然后请求方式用的post 然后我们把上面的信息…

php代码审计,php漏洞详解

文章目录 1、输入验证和输出显示2、命令注入(Command Injection)3、eval 注入(Eval Injection)4、跨网站脚本攻击(Cross Site Scripting, XSS)5、SQL 注入攻击(SQL injection)6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)7、Session 会话劫持(Session Hijacking…