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

黑马程序员C++核心编程笔记--3 函数高级

3.1 函数默认参数

本节内容之前已经整理过,详见22.函数的默认值

3.2 函数占位参数

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

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

在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术

示例:

#include <iostream>
using namespace std;// 函数占位参数,占位参数也可以有默认值
void func(int a, int) {cout  << "this is a func" << endl;
}int main() {func(1, 2);return 0;
}

3.3 函数重载-基本语法

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

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

注意:函数的返回值不可以作为函数重载的条件

示例:

#include <iostream>
#include <iostream>
using namespace std;// 1.参数类型不同
void print(int a)
{cout << "int" << endl;
}
void print(double a)
{cout << "double" << endl;
}// 2.参数顺序不同
void print(double a, int b) {cout << "int int" << endl;
}
void print(int a, double b) {cout << "double double" << endl;
}
// 注意:同类型参数顺序不同是不被允许的,因为函数名相同,编译器会认为这是同一个函数
// void print(int a, int b) {}和void print(int b, int a) {}同时出现时,编译器会报错// 3。参数个数不同
void print(int a, int b, int c) {cout << "int int int" << endl;
}
void print(int a, int b,  int c, int d) {cout << "int int" << endl;
}// 注意事项:函数返回值类型不同不可作为函数重载的条件
int main()
{print(1);print(1.0);print(1.0, 1);print(1, 1.0);print(1, 1, 1);print(1, 1, 1, 1);return 0;
}

3.4 函数重载-注意事项

  • 引用作为重载条件
  • 函数重载碰到函数默认参数

示例:

#include <iostream>
using namespace std;// 函数重载注意事项
// 1.引用作为重载的条件
void fun(int& a) {cout << "func(int& a)调用" << endl;
}void fun(const int& a) {cout << "func(const int& a)调用" << endl;
}// 2.函数重载碰到默认参数
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() {// func(int& a)调用int a = 10;fun(a);// func(const int& a)调用const int b = 10;fun(b);fun(10);// 当函数调用碰到默认参数会出现二义性报错// func(10);   // 错误❌,默认参数不能省略func(10,10);    //  正确return 0;
}
http://www.xdnf.cn/news/9457.html

相关文章:

  • 技术视界 | 打造“有脑有身”的机器人:ABC大脑架构深度解析(下)
  • android-studio-2024.3.2.14如何用WIFI连接到手机(给数据线说 拜拜!)
  • git push Git远端意外挂断
  • 代码随想录算法训练营第60期第五十天打卡
  • LVS的DR模式部署
  • C++23:std::print和std::println格式化输出新体验
  • 沉浸式 VR 汽车之旅:汽车虚拟展厅与震撼试驾体验
  • Python编程8——面向对象编程3
  • 前端面经 React 组件常见的声明方式
  • 从零开始搞个简易分布式部署环境
  • 封装一个小程序选择器(可多选、单选、搜索)
  • 使用 Syncfusion 在 .NET 8 中生成 PDF/DOC/XLS/PPT
  • IPMI SOL (Serial over LAN) 排错与配置手册
  • DNS解析过程以及使用的协议名称
  • Redis击穿,穿透和雪崩详解以及解决方案
  • 睡眠分期 html
  • ArcGIS Pro裁剪影像
  • 4.8.4 利用Spark SQL实现分组排行榜
  • 油桃TV v20250519 一款电视端应用网站聚合TV播放器 支持安卓4.1
  • 苍茫命令行:linux模拟实现,书写微型bash
  • 项目代码工程优化之concurrent.futures异步编程(二)
  • 加密协议知多少
  • 【前端】PWA
  • Hadoop复习(二)
  • 网络协议入门:TCP/IP五层模型如何实现全球数据传输?
  • C++学习之STL学习:vector类的使用
  • flutter常用动画
  • c++ 调用opencv或pcl流程
  • 【Tomcat】Tomcat端口仅允许本地访问设置方法
  • 接地气的方式认识JVM(一)