当前位置: 首页 > news >正文

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;
}

相关文章:

  • 2024年阿里云服务器2核8G、4核16G、8核32G配置收费标准
  • Spring使用(一)注解
  • 梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码
  • qT 地图显示飞机轨迹
  • C语言_第一轮笔记_指针
  • 数据仓库——事实表
  • 03-MySQl数据库的-用户管理
  • Stable Diffusion扩散模型推导公式的基础知识
  • R语言颜色细分
  • Leaflet使用多面(MultiPolygon)进行遥感影像掩膜报错解决之道
  • 【讲解下go和java的区别】
  • 【Java 多线程】从源码出发,剖析Threadlocal的数据结构
  • 总结UDP协议各类知识点
  • 代码块的总结
  • 免费小程序https证书
  • 深入了解以太坊
  • [nginx文档翻译系列] 控制nginx
  • Angular 响应式表单 基础例子
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Electron入门介绍
  • express + mock 让前后台并行开发
  • Joomla 2.x, 3.x useful code cheatsheet
  • nginx 配置多 域名 + 多 https
  • opencv python Meanshift 和 Camshift
  • Python3爬取英雄联盟英雄皮肤大图
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 百度地图API标注+时间轴组件
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 工程优化暨babel升级小记
  • 京东美团研发面经
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • linux 淘宝开源监控工具tsar
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • Spring第一个helloWorld
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​一些不规范的GTID使用场景
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (1)(1.13) SiK无线电高级配置(六)
  • (BFS)hdoj2377-Bus Pass
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (js)循环条件满足时终止循环
  • (poj1.2.1)1970(筛选法模拟)
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)计算机毕业设计大学生兼职系统
  • (推荐)叮当——中文语音对话机器人
  • (转)scrum常见工具列表
  • (转)Sublime Text3配置Lua运行环境
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net专家(张羿专栏)