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

c++ 学习笔记 函数进阶

1. 函数的默认参数

 1.在C++中,函数的参数分为必选参数和默认参数,必选参数必须传递,默认参数可以选择传递2. 语法:返回值类型 函数名(参数 = 默认值) {...}
#include <iostream>
using namespace std;// 函数默认参数
// 在C++中,函数的参数分为必选参数和默认参数,必选参数必须传递,默认参数可以选择传递
// 语法:返回值类型 函数名(参数 = 默认值) {...}// 如果我们自己传入数据,则使用传入的数据,如果我们不传入数据,则使用默认值
int func(int a, int b = 20, int c = 30) {return a + b + c;
}// 注意事项:
// 1. 如果某个位置参数有默认值,那么从这个位置往后,从左到右,必须都要有默认值
// int fun2(int a, int b = 10, int c = 10, int d) {   // 错误
//     return a + b + c;
// }// 2. 如果函数声明有默认值,那么函数实现就不能有默认值
// 声明和实现只能有一个默认值
int func2(int a, int b = 20, int c = 30);
int func2(int a, int b, int c) {return a + b + c;
}int main(int argc, char const *argv[])
{cout << func(10, 30) << endl;return 0;
}

2. 函数占位参数

占位参数的类型必须指定,占位参数不占用实际的内存空间
c++中函数的形参列表里可以有占位参数,用来占位,调用函数时必须填补该占位参数,否则会报错
// 函数占位参数
// 占位参数的类型必须指定,占位参数不占用实际的内存空间
// c++中函数的形参列表里可以有占位参数,用来占位,调用函数时必须填补该占位参数,否则会报错
// 语法:返回值类型 函数名(数据类型){}
// 占位参数也可以有默认值
void func(int a, int = 10){cout << "this is func a: " <<  a << endl;
}int main(int argc, char const *argv[])
{func(10);return 0;
}

3. 函数重载

3.1 函数重载概述

作用:函数名相同,提高复用性
同一个作用域下,
函数名相同,
参数列表不同,或者个数不同,或者顺序不同
注意事项:函数的返回值不可以作为函数重载的条件
#include <iostream>
using namespace std;// 函数重载概述
// 作用:函数名相同,提高复用性
// 同一个作用域下,
// 函数名相同,
// 参数列表不同,或者个数不同,或者顺序不同
// 注意事项:函数的返回值不可以作为函数重载的条件void func(){cout << "func 的调用" << endl;
}void func(int a){cout << "func 的调用 " << a << endl;
}void func(double a){cout << "func 的调用 double " << a << endl;
}void func(double a, int b){cout << "func 的调用 double int " << a << " " << b << endl;
}int main(int argc, char const *argv[])
{func(8.8,66);return 0;
}

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;
}// 函数重载碰到默认参数,会造成二义性
void func2(int a){cout << "func2 (int a)的调用" << endl;
}void func2(int a, int b = 10){cout << "func2 (int a)的调用" << endl;
}int main(int argc, char const *argv[])
{// int a = 10;// func(a);// const int b = 10;// func(10); // func2(10); // 函数重载碰到默认参数,会造成二义性func2(10,10);return 0;
}

http://www.mrgr.cn/news/79578.html

相关文章:

  • Swing1.计算器案例
  • 企业级包管理器之搭建 npm 私有服务器 (6)
  • uniapp-在windows上IOS真机运行(含开发证书申请流程)
  • WebRTC服务质量(01)- Qos概述
  • 设计模式 在PLM系统的应用场景介绍
  • 人脸识别Adaface之libpytorch部署
  • Python知识分享第二十二天-数据结构入门
  • LEGO-GraphRAG框架-图谱检索增强生成框架介绍
  • Ubuntu 安装 web 服务器
  • 11—增加/移除OrCAD的Xnet(保姆级)
  • [HDCTF 2023]LoginMaster
  • AI绘画设计实战-Day2
  • 【Rive】波动文字
  • AES 与 SM4 加密算法:深度解析与对比
  • OpenSearch Dashboard 权限管理:如何设置只读权限
  • 基于SpringBoot+Vue的旅游网站管理系统
  • MySQL--》如何在SQL中巧妙运用函数与约束,优化数据处理与验证?
  • 计算机毕业设计SpringBoot+Vue.js知识图谱课程推荐系统 课程预测系统 mooc慕课课程爬虫 课程大数据 课程数据分析大屏 大数据毕业设计 大
  • windows ping 执行过程分析
  • 【Docker】Linux与Windows系统安装Docker+Docker上简单安装MySQL
  • 黑马redis
  • frida(objection)中x.ts到x.py封装路径
  • 复现论文:PromptTA: Prompt-driven Text Adapter for Source-freeDomain Generalization
  • ubuntu防火墙设置(四)——iptables语法与防火墙基础配置
  • 树莓派4B使用opencv读取摄像头配置指南
  • 【计网笔记】网络参考模型